我有两张桌子。
table1
aid alphabet Name 1 A Apple 2 A Air 3 B Ball 4 C Cat 5 C Cow 6 F Footbal 7 G God
表2
did aid typeId groupId description 1 1 3 4 apple description 2 2 3 4 ffdadfdfd 3 3 5 6 fdsfsdafasdf
我需要选择条件类型为1和groupId 4的每个字母表的table2映射计数。
我写了这种查询,但它没有提取所有字母。那些字母表只有它的提取映射。
select a.alphabet, count(did) from table1 a left join table2 b on a.aid=b.aid
where b.typeId=3 and b.groupId=4 group by a.alphabet
我该如何编写这种查询?
我需要这种输出。
alphabet Count A 2 B 0 C 0 F 0 .. etc
答案 0 :(得分:1)
通过在where子句中添加typeId
和groupId
检查,您可以通过要求所有行在此连接表中具有值来有效地使您的左连接成为内连接。但是,这是不的情况。如果将类型和组检查移动到on
子句(在连接中),则应获得所需的结果。
select
a.alphabet,
count(b.did)
from
table1 a
left join table2 b
on a.aid=b.aid and b.typeId=3 and b.groupId=4
group by
a.alphabet