微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL NOT LIKE 与子查询

如何解决SQL NOT LIKE 与子查询

我怎样才能做到这一点?

SELECT a.city 
FROM Address a 
WHERE a.city NOT LIKE ANY '(
SELECT a2.city FROM Address a2 WHERE a2.id = ANY (
SELECT ca.customerAddresspK.addressId FROM CustomerAddress ca WHERE ca.customerAddresspK.customerId = ANY(
SELECT c.id FROM Customer c WHERE c.firstName = 'niko')))'

所以我想得到一个城市列表,这些城市与有 niko 地址的城市不同。地址实体和客户实体是多对多的关系。

是否有其他方法可以运行此查询

解决方法

所以我想得到一个城市列表,这些城市与有 niko 地址的城市不同。

您可以为此查询使用聚合:

SELECT a.city 
FROM Address a join
     CustomerAddress ca
     on ca.addressId = a.id join
     Customer c
     on ca.customerId = c.id
GROUP BY a.city
HAVING SUM(CASE WHEN c.firstName = 'niko' THEN 1 ELSE 0 END) = 0;

注意:这里假设所有地址都有一个城市。这似乎也是您尝试的假设。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。