使用 EXISTS、ALL、ANY 的 SQL 语句出现问题

Posted

技术标签:

【中文标题】使用 EXISTS、ALL、ANY 的 SQL 语句出现问题【英文标题】:Problem with SQL statement using EXISTS, ALL, ANY 【发布时间】:2020-12-15 15:03:53 【问题描述】:

我必须使用EXISTSALLANY 来查找目录中包含id = 101 的所有汽车零件的所有提供商的名称。

Providers 是包含idnameProvider 的第一个表。Catalog 是包含ididp 的第二个表(汽车零件的ID)

查询:

select nameProvider
from Providers
where id in (select id from Catalog where id = 101);

我的陈述中缺少什么?谢谢!

【问题讨论】:

您不应该使用 EXISTS、ALL 或 ANY 吗?我会在这里使用 EXISTS 和一个相关的子查询。 【参考方案1】: 在关联的子查询中使用减号运算符,并且不存在可以正常工作 我过滤掉 id = 101,因为我假设输出中不需要 Provider id =101
select nameProvider
from Providers p
where p.id != 101
and not exists ( 
  select  idp from Catalog c1 where c1.id = 101 
    minus 
  select  idp from Catalog c2 where c2.id = p.id
  )
;

【讨论】:

以上是关于使用 EXISTS、ALL、ANY 的 SQL 语句出现问题的主要内容,如果未能解决你的问题,请参考以下文章

LINQ体验——LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains

SQL:我们需要 ANY/SOME 和 ALL 关键字吗?

MySQL中子查询IN,EXISTS,ANY,ALL,SOME,UNION介绍

PostgreSQL 12.2 公开课及视频及PGCE认证(第10期)(CUUG)(2020年)

sql中any和all的区别?

ANY,SOME,ALL 在SQL语句中的区别?