Mysql从table1中选择id并从table2中选择count(id)

时间:2014-04-30 19:56:13

标签: mysql count inner-join

我有两张桌子。我想从表1中选择id并从table2中计算相同的

表1

Id  qId opt
1   30  Chris Christie
2   30  Hillary Clinton
3   30  Allan West
4   30  Joe Biden
5   31  Mark
6   31  Ben Johnson

表2

poll_id qId ansId
201     30  1
202     30  2
204     31  8

我试过下面的查询,只输出ansId 1和2,因为表2中没有3和4。

SELECT a.Id, 
a.opt, 
COUNT(b.ansId)  
from Table1 a 
INNER JOIN Table2 b ON a.Id = b.ansId 
where a.qId =30

但我需要所有ansId 1,2,3,4,其中3和4的数量为0,如下所示。

Id   opt               COUNT(b.ansId)
1    Chris Christie    1
2    Hillary Clinton   1
3    Allan West        0
4    Joe Biden         0

1 个答案:

答案 0 :(得分:0)

你的第一件事就是group by,count是一个聚合函数,需要进行分组,其次你需要在on子句and a.qId =30中使用左连接和附加条件,所以它会stil给你如果在右表中找不到left id,则使用where子句将过滤掉整个结果集,而如果在join中使用其他条件,则只会过滤右表中的记录

SELECT a.Id,
a.opt,
COUNT(b.ansId)  from Table1 a
LEFT JOIN Table2 b ON a.Id = b.ansId and  a.qId =30
GROUP BY a.Id

Fiddle Demo

样本数据集更新后

编辑

SELECT a.Id,
a.opt,
COUNT(b.ansId)  from Table1 a
LEFT JOIN Table2 b ON a.Id = b.ansId
WHERE  a.qId =30
GROUP BY a.Id

Fiddle demo 2