gpt4 book ai didi

sql - EXISTS 如何返回除所有行或不返回行之外的内容?

转载 作者:行者123 更新时间:2023-12-02 18:16:56 25 4
gpt4 key购买 nike

我是一名初级 SQL 程序员 - 我得到了大部分东西,但不存在。

在我看来,并且通过文档来看,整个 EXISTS 语句返回一个 bool 值。

但是,我看到了可以使用它并返回表的一部分而不是全部或全部不返回的具体示例。

SELECT DISTINCT PNAME
FROM P
WHERE EXISTS
(
SELECT *
FROM SP Join S ON SP.SNO = S.SNO
WHERE SP.PNO = P.PNO
AND S.STATUS > 25
)

此查询返回一个值,即满足条件 (S.Status > 25) 的值。

但是,对于其他查询,如果 EXISTS 子查询中的某一行为 true,它似乎会返回我正在选择的整个表。

如何控制这一点?

最佳答案

诸如 EXISTS 之类的子查询可以是相关的,也可以是不相关的。

在您的示例中,您使用相关子查询,这通常是 EXISTS 的情况。您在 SP 中查找给定 P.PNO 的记录,即对每个 P 记录进行查找。

如果没有SP.PNO = P.PNO,您将拥有一个不相关的子查询。 IE。子查询不再依赖于P记录。对于任何 P 记录,它都会返回相同的结果(状态 > 25 存在或不存在)。大多数情况下,当发生这种情况时,这是错误地完成的(忘记将子查询与相关记录相关联),但有时这是需要的。

关于sql - EXISTS 如何返回除所有行或不返回行之外的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26989754/

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