我有两张这样的桌子。
A B
1 12
2 13
3 12
4 13
5 15
B C
12 APPLE
13 ORANGE
14 MANGO
15 BANANA
我需要输出如下......
count(A) B C
2 12 APPLE
2 13 ORANGE
0 14 MANGO
1 15 BANANA
我已经使用连接编写了查询但是在空值的情况下,我仍然坚持将计数显示为零。
答案 0 :(得分:3)
使用left join
获取table2
的值,即使table1
select T2.B, T2.C, count(T1.A)
from table2 T2
left join table1 T1 on T1.B = T2.B
group by T2.B, T2.C
答案 1 :(得分:2)
试试这个:
SELECT COUNT(T1.A) as Cnt,T2.B,T2.C
FROM Table2 T2 LEFT JOIN
Table1 T1 ON T1.B=T2.B
GROUP BY T2.B,T2.C
结果:
CNT B C
2 12 APPLE
1 15 BANANA
0 14 MANGO
2 13 ORANGE
请参阅SQL Fiddle中的结果。
答案 2 :(得分:1)
只是给你另一种选择。您不需要连接,因为您只想显示table2记录以及您可以在子查询中获得的另一个值。
select (select count(*) from table1 where table1.B = table2.B) as cnt, B, C
from table2
order by B;