SQL 存在与聚合不为空



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

使用存在:

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

使用聚合函数:

(select max(1) from [table] where [conditions]) is not null
[

表]和[条件]在两个语句中是相等的。这两个子句是否有可能返回不同的结果?如果没有,哪一个查询性能更好?如果它很重要,那么有问题的数据库是 IBM DB2 UDB v10。

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

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

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

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

最新更新