Sql server 使用计数(*)选择,但不从表中选择,允许,为什么?

Sql server 使用计数(*)选择,但不从表中选择,允许,为什么?,sql-server,Sql Server,我今天遇到了这个复杂的SQL,请不要为它的功能而烦恼 SELECT CASE WHEN count(*) >= 1 THEN 1 ELSE 0 END WHERE 1 = 1 我所说的“卷积”是指它似乎产生了与此完全相同的结果: SELECT 1 但这个问题并不是为什么它是这样写的。 我的问题是,为什么允许这样做。当没有涉及表时,它如何使用count(*)?算什么 上面的查询执行并返回1,我最初的反应是“这不可能

我今天遇到了这个复杂的SQL,请不要为它的功能而烦恼

SELECT CASE 
        WHEN count(*) >= 1
            THEN 1
        ELSE 0
        END
WHERE 1 = 1
我所说的“卷积”是指它似乎产生了与此完全相同的结果:

SELECT 1
但这个问题并不是为什么它是这样写的。 我的问题是,为什么允许这样做。当没有涉及表时,它如何使用
count(*)
?算什么

上面的查询执行并返回1,我最初的反应是“这不可能工作”,但它确实工作了

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

那么原因是什么呢?

同样的原因也是这样:

Select GetDate()

在这种情况下,返回一行当前系统日期和时间。添加Count(*)返回1,因为返回了1行。

我知道我以前看到过这个,请检查:如果是重复的,请将其标记为重复。