我是一名新手SQL程序员-我得到了很多东西,但还没有。
在我看来,从文档的角度来看,整个EXISTS语句返回一个布尔值。
但是,我看到了可以使用它并返回表的一部分而不是全部或全部不返回的特定示例。
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
您,您将拥有一个不相关的子查询。即子查询不再取决于P记录。对于任何P记录,它将返回相同的结果(是否存在Status> 25)。大多数情况下,这是错误地完成的(一个忘记将子查询与相关记录相关联),但有时这样做是希望的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句