许多论坛和网站在帖子或表格中显示用户信息(当您查看超过1个用户时)
例如,您可能有一个论坛帖子,其上的每个帖子都会显示有关海报的信息,如下所示:
姓名:约翰 电子邮件:email@email.com 帖子:450
他们可能有一个用户表,其中存储了姓名和电子邮件,然后是一个表格。
在一个sql语句中我能想到的唯一想法就是每次用户发布时在用户表中添加1到一行(对应于发布用户的那一行),这似乎是一个对我不好的解决方案。
他们如何计算每个用户的帖子数量?
答案 0 :(得分:3)
他们使用SQL COUNT()
函数动态生成计数:
SELECT COUNT( *) FROM posts WHERE user_id = 1
这将计算posts
表中由符合条件user_id = 1
的用户编写的行数。
要在一个查询中执行此操作,您可以使用JOIN和GROUP BY标识符,如下所示:
SELECT username, user_email, COUNT( p.post_id) as num_posts
FROM users u
LEFT JOIN posts p
ON p.user_id = u.user_id
WHERE u.user_id = 1
GROUP BY u.user_id
答案 1 :(得分:1)
假设电子邮件在用户表中是唯一的,您可以执行以下操作:
SELECT u.name, u.email, count(*)
FROM users u, posts p
WHERE u.user_id = p.user_id
GROUP BY u.email;