【发布时间】: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