【发布时间】:2013-02-13 23:25:30
【问题描述】:
我无法理解此查询是否有效。假设返回订购了所有商品的客户的姓名。
R是指客户下单的商品订单表,包含客户id(cid)和商品id(iid)
I指的是可以订购的商品表,其中包含商品id
C 是带有客户 ID 的客户表
SELECT cname
FROM Customer C
WHERE NOT EXISTS
( (SELECT I.iid
FROM Item I)
EXCEPT
(SELECT R.iid
FROM Order R
WHERE R.cid=C.cid))
据我推测,带有 SELECT R.iid 的底部嵌套查询会获取任何客户订购的所有商品。
然后上面的嵌套查询 EXCEPT with SELECT I.iid,通过下面的查询减去找到所有之前没有排序的项目。
如果它是嵌套的,那么 NOT EXISTS 会评估什么语句?是因为 FROM Customer C 而导致的 R.cid = C.cid 吗? .我不确定我将如何得到我的最终结果。感谢您的帮助。
【问题讨论】:
-
假设返回已订购所有商品的客户姓名。 是
-
双重不存在的技巧在这里会起作用。
-
你应该问这个问题而不说它应该做什么:)