Mysql简单实现数据表的排名

有一种非常常见的需求,将用户按照发帖的多少,设定站内的名次。这个通常是用后台的batch来实现。

不过如何用一条语句就能实现呢。不妨试试下面的方法

SET @rank = 0;
UPDATE    user_mst
JOIN
(  SELECT @rank := @rank + 1 AS rank, user_mst.user_id
FROM user_mst
ORDER BY post_num desc) rank_user
ON user_mst.user_id = rank_user.user_id
SET user_mst.p_rank = rank