mysql选择顶级用户问题

时间:2010-03-17 13:57:49

标签: mysql

我有users表,我有posts表我希望从users表中选择来自posts表的大量帖子的顶级用户,并按顺序排序帖子数量 我可以通过array_count_values()来订购它 现在我想如果我通过左边的一个mysql查询来做它并且join会更好

表格结构

posts

id | auther_id

我试过这个

SELECT COUNT(1) cnt, u.user_id 
FROM users u 
LEFT JOIN posts p
ON p.author_id=u.user_id
GROUP BY u.user_id
ORDER BY cnt DESC
LIMIT 20

它给了我这个 alt text http://img511.imageshack.us/img511/6707/31154352.gif 看到箭头 这是什么 我在user_id 5下只有2个帖子 第一行是什么

3 个答案:

答案 0 :(得分:5)

您需要使用GROUP BY u.user_id按用户聚合帖子,按降序获取帖子数量和ORDER BY该数字的COUNT值:

SELECT COUNT(1) cnt, u.user_id 
FROM users u 
LEFT JOIN posts p
ON p.author_id=u.user_id
GROUP BY u.user_id
ORDER BY cnt DESC
LIMIT 20

答案 1 :(得分:2)

SELECT u.user_id, COUNT(*) as post_count
FROM   users u
INNER JOIN posts p
USING (user_id)
GROUP BY u.user_id
ORDER BY post_count

答案 2 :(得分:0)

我用过这个并且它起作用了 这是真的

SELECT COUNT( 1 ) cnt, a.auther_id
FROM `posts` a
LEFT JOIN users u ON a.auther_id = u.id
GROUP BY a.auther_id
ORDER BY cnt DESC
LIMIT 20