尽管GROUP BY,LEFT JOIN返回所有行

时间:2016-07-03 07:27:40

标签: mysql

我正在尝试获取LEFT JOIN查询以包含评论表中的所有行:

SELECT r.review_id, SUM(v.vote_good), SUM(v.vote_bad)
FROM reviews AS r
LEFT JOIN reviews_votes_overall AS v
ON r.review_id = v.vote_review_id
GROUP BY v.vote_review_id
ORDER BY SUM(v.vote_good)

不幸的是,由于某些评论没有相应的投票,因此GROUP BY会导致评论表中的行不被退回。

如何从此查询中的评论表中返回所有行?

1 个答案:

答案 0 :(得分:2)

您应该使用GROUP BY r.review_id。如果评论没有任何投票,则v.vote_review_idNULL。当您按v.vote_review_id分组时,所有投票数为零的记录将被归为结果集中的一行,review_idNULL

SELECT r.review_id, SUM(v.vote_good), SUM(v.vote_bad)
FROM reviews AS r
LEFT JOIN reviews_votes_overall AS v
ON r.review_id = v.vote_review_id
GROUP BY r.review_id
ORDER BY SUM(v.vote_good)