SQL EXISTS与Aggregate IS NOT NULL

时间:2014-02-17 02:00:19

标签: sql database db2 aggregate exists

我有两种不同形式的SQL条件。

使用EXISTS:

exists (select 1 from [table] where [conditions]) 

使用聚合功能:

(select max(1) from [table] where [conditions]) is not null
两个陈述中的

[table]和[conditions]相等。 这两个条款是否有可能返回不同的结果? 如果没有,哪一个有更好的查询性能? 如果重要,那么有问题的数据库是IBM DB2 UDB v10。

1 个答案:

答案 0 :(得分:1)

我没有DB2来测试它。但我认为这取决于。以下声明:

select max(1)
from (select 1 as i)t
where i = 2

在SQL Server(null)和MySQL(1)上产生不同的结果。如果DB2返回1,那么语句就不同了。不过,我希望它会返回null

如果返回null,则两个语句的效果相同。但是,max()语句的效果可能不如existsexists语句可以在第一个匹配值处停止。