【DB2】在使用EXISTS时,查询结果中包含聚合函数,一个不注意就会犯错的坑


需求描述

现在需要通过EXISTS中的语句来控制查询结果是否存在

第一次实现SQL

SELECT 1  AS ID,SUM(1)  FROM
(SELECT ID,NAME FROM (VALUES(1,'AA'),(2,'BB')) AS B(ID,NAME))
WHERE EXISTS
(SELECT 1 FROM SYSIBM.DUAL WHERE 1=2 )

查询结果

image

查询出来就发现会存在一条记录

正确的写法

SELECT * FROM
(SELECT 1  AS ID,SUM(1)  FROM
(SELECT ID,NAME FROM (VALUES(1,'AA'),(2,'BB')) AS B(ID,NAME))
)  WHERE EXISTS
(SELECT 1 FROM SYSIBM.DUAL WHERE 1=2 )


只有通过这样才能 控制数据,当EXISTS为FLASE的时候,查询为空。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM