我有 users
表,我有 posts
表,我想从 users
中选择拥有大量帖子的顶级用户 posts
表并按帖子数排序
我可以通过 array_count_values()
来实现,但我无法订购
现在我想如果我通过一个 mysql 查询来完成它并加入会更好
表结构
posts
编号 |作者编号
我试过了
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 个帖子 第一行是什么
最佳答案
您需要使用 GROUP BY u.user_id 按用户聚合帖子,获取帖子数量的 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
关于mysql select top users问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2462749/