【发布时间】:2012-04-23 18:49:06
【问题描述】:
我有我的 mysql 表 posts,其中存储了我论坛的所有帖子。是这样的:
id uid thread post title text time
(int) (int) (varchar) (int) (varchar) (text) (int)
现在我想在用户个人资料上显示排名(帖子数量的排名)。我尝试过这样的事情:
set @rownum := 0;
SELECT @rownum := @rownum + 1 AS rank, uid, count(id)
FROM `posts` GROUP BY uid ORDER BY count(id)
但它返回的数据不正确。 uid 和 count(id) 匹配,但排名错误。 我的条目是这样的:
rank uid count(id)
1 1 214
我是用户 1,我有 214 个帖子,但这不是排名 1。 还有其他条目,例如:
rank uid count(id)
8 22 674
我怎样才能让查询给出正确的排名?
【问题讨论】:
-
那是
ORDER BY count(id) DESC对吧? -
@mellamokb 它不适用于 DESC 和 ASC
-
如果两个或更多用户的帖子数量相同,您希望发生什么?
-
@pilcrow hm,我认为这没关系,它应该只为每个 uid 次要的 ist 排序