【发布时间】:2015-11-20 18:10:04
【问题描述】:
我有一个嵌套的 Not Exists,并且想知道它是否是双重否定。如果我删除两个否定,如果它是等效的查询?
Suppliers(sid: integer, sname: string, address: string)
Parts(pid: integer, pname: string, color: string)
Catalog(sid: integer, pid: integer, cost: real)
SQL 翻译:“C.Sid for which doesn't exist 不存在 C.Sid 的部分”
SELECT C.sid
FROM Catalog C
WHERE NOT EXISTS (SELECT P.pid
FROM Parts P
WHERE NOT EXISTS (SELECT C1.sid
FROM Catalog C1
WHERE C1.sid = C.sid
AND C1.pid = P.pid)
)
删除的否定:“提供每个部分的 C.Sid”
SELECT C.sid
FROM Catalog C
WHERE EXISTS (SELECT P.pid
FROM Parts P
WHERE EXISTS (SELECT C1.sid
FROM Catalog C1
WHERE C1.sid = C.sid
AND C1.pid = P.pid)
)
【问题讨论】:
-
那行不通,你不是在处理“每个部分”,只是“存在一个部分”