从外连接表中获取记录数

时间:2014-01-26 05:25:24

标签: mysql

我有两张桌子 - 乐队和评论。如果对波段表中的特定波段作出任何评论,则注释表将保留记录。我需要在乐队上发表的评论数量以及乐队表中的所有细节。所以这是我的查询

select band.*, count(comments.band) as count  from band left join comments on band.id = comments.band 

但是,此查询仅提取与该表匹配的记录。我需要列出所有乐队表记录,即使在评论表中没有匹配的记录(使用左连接的主要原因)任何帮助?

3 个答案:

答案 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