gpt4 book ai didi

SQL:在嵌套查询中使用 Not Exists

转载 作者:行者123 更新时间:2023-12-01 12:52:51 26 4
gpt4 key购买 nike

我无法理解此查询的工作原理。假设返回订购了所有商品的客户的姓名。

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 和 SELECT I.iid,通过使用下面的查询减去查找之前没有订购的所有项目。

如果是嵌套的,NOT EXISTS 不计算什么语句?是 R.cid = C.cid 因为 FROM Customer C 吗? .我不确定我将如何得到我的最终结果。感谢您的帮助。

最佳答案

分解一下。向后/从最内层的查询开始:

这将返回客户订购的商品 ID 列表。 (我假设 iid 代表项目 ID,并且是 R 中的 fk)

SELECT R.iid FROM Order R WHERE R.cid=C.cid

这会返回一个项目 ID 列表(通常),除了客户已经订购的那些

SELECT I.iid FROM Item I EXCEPT...

最后,这会返回一个客户列表,其中包含未订购列表中的任何一项的客户。

SELECT cname FROM Customer C Where NOT EXISTS...

基本上,您是在寻找至少订购了所有商品中的一种的客户。

关于SQL:在嵌套查询中使用 Not Exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15124220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com