php - 如何获取每个用户的所有帖子?

标签 php mysql sql join count

我有一个表 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/

相关文章:

javascript - 数据库时间戳返回有趣的值

php - 在交易过程中重新加载页面

php - 当前时间更新MySQL查询

php mysql 在同一查询中的 WHERE 子句中使用子查询结果

php - phpunit 中的模拟类

php - MySQL:关于重置 auto_increment 选项

php - 无法使用给定的 codeigniter : parameter 1 expect to be string, 数组发送电子邮件

mysql检索事件之间的最大延时

mysql - 从 call_log 中获取并发电话的最大数量

mysql - SUB 按日期和管理者分组查询