【问题标题】:SQL NOT LIKE with subquerySQL NOT LIKE 与子查询
【发布时间】:2021-04-12 08:00:12
【问题描述】:

我怎样才能做到这一点?

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 地址的城市不同的城市列表。地址实体和客户实体具有多对多关系。

我可以在哪里运行此查询?

【问题讨论】:

  • 样本数据和预期结果将帮助我们在这里为您提供帮助。当然,你所拥有的东西是行不通的;它不是有效的 T-SQL。还有,这个问题和jpql有什么关系?
  • ca.customerAddressPK.customerId 是无效的有效列引用。这只是为什么最好发布一个其他人可以运行的脚本来理解您的问题的原因之一。也许您假设只有一个客户的名字 = 'niko' - 这安全吗?可能不是,但正确的代码取决于您的架构和您的实际目标。

标签: sql sql-server jpql


【解决方案1】:

所以我想获取一个与具有 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;

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

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多