MySQL中的Join,Group By和Sum

时间:2010-02-06 11:41:05

标签: mysql group-by sum left-join

我在MySQL数据库中有以下三个表,以便对用户的评论进行评级:

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的所有评论,以及该特定评论的用户名和所有评分的总和。起初看起来非常简单,我提出了这个问题:

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。那么,有没有办法包含那些未评级的评论?像这样:

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

1 个答案:

答案 0 :(得分:2)

您可以尝试对comments.id进行分组吗?