1

许多论坛和网站在帖子或表格中显示用户信息(当您查看超过 1 个用户时)

例如,您可能有一个论坛主题,其中的每个帖子都显示有关海报的信息,如下所示:

姓名:约翰 电子邮件:email@email.com 帖子:450

他们可能有一个用于存储姓名和电子邮件的用户表,然后是一个用于帖子的表。

我能想到的唯一想法是在每次用户发布时在用户表中的一行(对应于发布帖子的用户)中添加 1,这似乎是一个不好的解决方案我。

他们如何计算每个用户的帖子数量?

4

2 回答 2

3

他们使用 SQLCOUNT()函数来动态生成计数:

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
于 2012-06-29T19:38:59.010 回答
1

假设电子邮件在用户表中是唯一的,您可以执行以下操作:

SELECT u.name, u.email, count(*) 
FROM users u, posts p
WHERE u.user_id = p.user_id
GROUP BY u.email;
于 2012-06-29T19:41:05.543 回答