SELECT中有一个COUNT(*),但是没有FROM TABLE,允许,为什么?

时间:2014-08-20 12:50:49

标签: sql-server

我今天遇到了这个错综复杂的SQL,请不要挂断它的作用。

SELECT CASE 
        WHEN count(*) >= 1
            THEN 1
        ELSE 0
        END
WHERE 1 = 1

通过“复杂”我的意思是它似乎产生与此完全相同的结果:

SELECT 1

但这个问题并不是为什么它是这样写的。 我的问题是为什么允许上述原因。如果没有涉及表格,它如何使用count(*)?算什么?

上面的查询执行并返回1,我的初步反应是“这不可行”,但确实如此。

为什么?

1 个答案:

答案 0 :(得分:1)

同样有效的原因:

Select GetDate()

在这种情况下,将返回包含当前系统日期和时间的单行。添加Count(*)返回1,因为正在返回1行。