我有两张桌子
tblTenant
idTenant Name
1 Hello
2 World
3 Foo
4 Bar
tblPhone
idTenant idPhoneType PhoneNum
1 23 31445
1 24 43123
1 25 90899
2 23 90937
2 24 34544
4 24 23455
现在,我希望所有租户的ID谁从未有PHONETYPE的25。
Output:
idTenant
2
3
4
idTenant = 1 被排除,因为它有一个 phonetype = 25 的条目
我写的查询:
select * from tblTenant where idTenant not in ( SELECT distinct(idTenant) FROM tblPhone where idPhoneType = 25) ;
但我想使用 JOINS 编写此查询。是否可以?请指导我。
.
使用条件聚合:
SELECT
t1.idTenant, t1.Name
FROM tblTenant
LEFT JOIN tblPhone t2
ON t1.idTenant = t2.idTenant
GROUP BY
t1.idTenant, t1.Name
HAVING
SUM(CASE WHEN t2.idPhoneType = 25 THEN 1 ELSE 0 END) = 0 AND
COUNT(t2.idTenant) > 0;
上述查询的关键是我们聚合了tblPhone
按租户,并断言电话类型 25 永远不会发生。然后,我们加入以tblTenant
引入实际的租户名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句