mysql选择顶级用户问题
我有mysql选择顶级用户问题,mysql,Mysql,我有用户表,我有帖子表,我想从用户表中选择拥有大量帖子的顶级用户,并按帖子数量排序 我可以通过array\u count\u values()来制作,但我不能订购 现在我想,如果我通过左边的一个mysql查询和join来实现它,将会更好 表格结构 posts id |作者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
用户
表,我有帖子
表,我想从用户
表中选择拥有大量帖子的顶级用户,并按帖子数量排序
我可以通过array\u count\u values()
来制作,但我不能订购
现在我想,如果我通过左边的一个mysql查询和join来实现它,将会更好
表格结构
posts
id |作者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
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
它给了我这个 看到箭头了吗 这是什么 我在user_id 5下只有2篇帖子
第一行是什么?您需要使用GROUP by u user_id按用户聚合帖子。获取帖子数量的计数值,并按该数字降序排列:
您需要使用GROUP by u.user_id按用户聚合帖子,获取帖子数量的计数值,并按该数字降序排列: 我用了这个,它起作用了 是真的吗
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
我用了这个,它起作用了
是真的吗
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
你的表是什么样子的?你的表是什么样子的?我认为它有错误。请告诉我用户和帖子的数量。你必须包括按它排序的帖子数量。你不想要每个用户的帖子数量吗?它给出了排名前20位的每个用户的帖子数量和他们的用户id给我这一行1 cnt=15 id=2 row 2(我想要的东西)cnt=2 id=5,我只有2篇帖子在5个用户id下你好,我在这里。第一行是用户id 2的15篇文章。cnt是帖子的数量,id是用户id。我认为它有错误。请告诉我用户和帖子的数量。您必须包括要按其排序的帖子数量。你不想要每个用户的帖子数量吗?它给出了排名前20位的每个用户的帖子数量和他们的用户id给我这一行1 cnt=15 id=2 row 2(我想要的东西)cnt=2 id=5,我只有2篇帖子在5个用户id下你好,我在这里。第一行是用户id 2的15篇文章。cnt是帖子的数量,id是用户id。