我有两张桌子 - 乐队和评论。如果对波段表中的特定波段作出任何评论,则注释表将保留记录。我需要在乐队上发表的评论数量以及乐队表中的所有细节。所以这是我的查询
select band.*, count(comments.band) as count from band left join comments on band.id = comments.band
但是,此查询仅提取与该表匹配的记录。我需要列出所有乐队表记录,即使在评论表中没有匹配的记录(使用左连接的主要原因)任何帮助?
答案 0 :(得分:4)
我认为它会完美运作 -
SELECT
band.*, COUNT(comments.band) AS count_no
FROM
band
LEFT JOIN
comments ON band.id = comments.band
GROUP BY band.id;
答案 1 :(得分:2)
SQLfiddle:
http://sqlfiddle.com/#!9/986c8/6
SELECT b.name, count(c.band_id) AS comment_count
FROM band AS b
LEFT JOIN comments AS c
ON b.id = c.band_id
GROUP BY b.name;
编辑:看起来有些人打败了我!
答案 2 :(得分:1)
除非您没有GROUP BY
子句,否则该查询对我来说是正确的。如果没有GROUP BY
,它将仅返回包含其中所有行的计数的1行。您可以使用波段表主键。即GROUP BY band.id