sql – EXISTS如何返回除所有行或没有行以外的东西?

前端之家收集整理的这篇文章主要介绍了sql – EXISTS如何返回除所有行或没有行以外的东西?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_1@我是一个开始sql程序员 – 我得到了大多数东西,但不是EXISTS.

它在我看来,并通过文档查看整个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子查询中的一行甚至是真的,它似乎返回我正在选择的整个表.

如何控制这个?

解决方法

诸如EXISTS的子查询可以是相关的,也可以是非相关的.

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

如果没有SP.PNO = P.PNO,您将拥有一个不相关的子查询.即子查询不再依赖于P记录.它会为任何P记录返回相同的结果(状态> 25根本不存在).大多数情况下,当发生这种情况时,这是错误地完成的(一个忘记将子查询与所讨论的记录联系起来),但有时也是如此.

原文链接:https://www.f2er.com/mssql/74856.html

猜你在找的MsSQL相关文章