带有子查询的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;

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

最新更新