加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 数据库 > MsSql > 正文

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

发布时间:2023-12-20 16:20:00 所属栏目:MsSql 来源:DaWei
导读: 我是一个开始SQL程序员 C 我得到了大多数东西,但不是EXISTS.

它在我看来,并通过文档查看整个EXISTS语句返回一个布尔值.
但是,我看到了可以使用它的具体示例,并返回表的一部分,而不是

我是一个开始SQL程序员 C 我得到了大多数东西,但不是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根本不存在).大多数情况下,当发生这种情况时,这是错误地完成的(一个忘记将子查询与所讨论的记录联系起来),但有时也是如此.

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章