我正在尝试获取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会导致评论表中的行不被退回。
如何从此查询中的评论表中返回所有行?
答案 0 :(得分:2)
您应该使用GROUP BY r.review_id
。如果评论没有任何投票,则v.vote_review_id
为NULL
。当您按v.vote_review_id
分组时,所有投票数为零的记录将被归为结果集中的一行,review_id
为NULL
。
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)