【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的时候,查询为空。

posted @ 2018-07-02 10:22  OLIVER_QIN  阅读(1847)  评论(0编辑  收藏  举报