【问题标题】:Join, Group By and Sum in MySQLMySQL 中的 Join、Group By 和 Sum
【发布时间】:2010-02-06 11:41:05
【问题描述】:

我在 MySQL 数据库中有以下三个表,以便为用户的 cmets 评分:

Users:

id    name
-----------
1     Smith
2     Brown


Comments:

id    user_id    post_id    comment
-----------------------------------
1     2          1          Test 1
2     1          1          Test 2
3     1          1          Test 3


Scores:

id    user_id    comment_id    score
------------------------------------
1     1          1             1

现在我想选择 post_id = 1 的所有 cmets,加上用户名和该特定评论的所有分数的总和。起初看起来很简单,我想出了这个查询:

SELECT users.name, comments.comment, SUM(scores.score) AS score
FROM comments
LEFT JOIN users ON users.id = comments.user_id
LEFT JOIN scores ON scores.comment_id = comments.id
WHERE comments.post_id = 1
GROUP BY scores.comment_id

它似乎有效,但是当没有特定评论的分数时,评论不会显示,因为 MySQL 不能GROUP BY NULL,我猜。那么,有没有办法将那些未评级的 cmets 包括在内?像这样:

Query result:
name     comment    score
-------------------------
Brown    Test 1     1
Smith    Test 2     0
Smith    Test 3     0

【问题讨论】:

    标签: mysql group-by sum left-join


    【解决方案1】:

    也许你可以尝试在comments.id 上进行分组?

    【讨论】:

      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多