我有一个表 users
,其中包含每个用户的信息。然后是包含文章信息的 posts
表,最后是包含以下列的 user_posts
表:
user_id
post_id
...
我正在尝试获取帖子数量最多的用户图表。我做了这个查询:
SELECT u.id as uid, u.name as uname, count(up.id) as up_count FROM users as u JOIN user_posts as up ON up.user_id = u.id ORDER BY vcount DESC LIMIT 25
此查询仅返回一个用户和表 user_posts
中所有行的总数。
我做错了什么?我需要获取 25 个用户的列表,该列表按每个用户发表的文章数排序。
提前致谢
最佳答案
您的查询需要有 GROUP BY
子句,因为您使用了 COUNT()
函数。
SELECT u.id as uid,
u.name as uname,
count(up.id) as up_count
FROM users as u
LEFT JOIN user_posts as up
ON up.user_id = u.id
GROUP BY u.id, u.name
ORDER BY up_count DESC LIMIT 25
您必须按 ID
对它们进行分组,否则您将获得所有记录的总计数结果。还有一件事,使用 LEFT JOIN
,这样即使没有帖子的用户仍然可以在您的结果中看到,得分为 0
。
关于php - 如何获取每个用户的所有帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12272334/