sql – EXISTS如何返回除所有行或没有行以外的东西?
发布时间:2020-12-12 08:57:30 所属栏目:MsSql教程 来源:网络整理
导读:我是一个开始SQL程序员 – 我得到了大多数东西,但不是EXISTS. 它在我看来,并通过文档查看整个EXISTS语句返回一个布尔值. 但是,我看到了可以使用它的具体示例,并返回表的一部分,而不是全部或不返回. SELECT DISTINCT PNAMEFROM P WHERE EXISTS( SELECT * FROM
我是一个开始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根本不存在).大多数情况下,当发生这种情况时,这是错误地完成的(一个忘记将子查询与所讨论的记录联系起来),但有时也是如此. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |