【发布时间】:2019-06-03 09:08:01
【问题描述】:
我有一个 SQL 查询,我试图用简单的英语理解它的作用,而不是查询的工作原理,但我很难理解。查询是这样的:
SELECT S#
FROM S
WHERE NOT EXISTS
(SELECT *
FROM P
WHERE NOT EXISTS
(SELECT *
FROM SP
WHERE S.S# = SP.S#
AND P.P# = SP.P#));
该查询的架构是这样的:
S(S#,Sname,Status,City)
P(P#, Pname, Colour, Weight, City)
SP(S#, P#, Qty)
其中 S 是供应商,P 是零件,SP 是列出哪个供应商生产哪个零件的表格。
我目前的理解是,这将返回所有不生产任何零件的供应商编号,但如果正确,我不知道。
【问题讨论】:
-
愚蠢的问题你有没有运行它来看看它返回了什么?
-
小记你标记了
Mysql和Oracle是哪一个 -
它的 oracle 对不起,我删除了 Mysql 标签,但它实际上并没有返回任何东西,所以我对它应该做什么感到困惑。我收到的查询不是我自己写的。
-
这个查询应该被禁止,因为它与人们的想法相反;)无论如何加1作为挑战:)
标签: oracle subquery double exists