2012-10-03 56 views
2

我有2个表,表A和表B来自2个表的SQL查询与计数

A有以下字段:

id(primary key), 
references_id 

B也有字段:

id(primary_key) 
references_id. 

现在我给出的A的ID,我需要检索A.idcount(B.references_id)通过A.references_id

如何在SQL查询中执行此操作?

回答

4

使用LEFT JOIN所以即使references_id不存在于表B上,它仍然会显示。尝试这样的事情,

SELECT a.ID, COUNT(b.References_ID) totalCount 
FROM A LEFT JOIN B 
      ON a.References_ID = b.References_ID 
GROUP BY a.ID 
+1

+1为'left join'和'COUNT(b.References_ID)'得到0的计数 –

1

试试这个:

SELECT A.Id, COUNT(B.references_id) 
FROM A 
INNER JOIN B A.Reference_ID = B.References_ID 
GROUP BY A.Id 
1

只是折腾另一个选择在那里,这时候有相关子查询:

select a.id, (select count(*) from b where references_id = a.id) as ref_count 
from a as a 

奇怪的是,这有时可以提供比join and group by解决方案更高效的执行计划。我经常尝试两种。