Sql server 使用计数(*)选择,但不从表中选择,允许,为什么?
我今天遇到了这个复杂的SQL,请不要为它的功能而烦恼Sql server 使用计数(*)选择,但不从表中选择,允许,为什么?,sql-server,Sql Server,我今天遇到了这个复杂的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 1
但这个问题并不是为什么它是这样写的。
我的问题是,为什么允许这样做。当没有涉及表时,它如何使用count(*)
?算什么
上面的查询执行并返回1,我最初的反应是“这不可能工作”,但它确实工作了
SELECT CASE
WHEN count(*) >= 1
THEN 1
ELSE 0
END
WHERE 1 = 1
那么原因是什么呢?同样的原因也是这样:
Select GetDate()
在这种情况下,返回一行当前系统日期和时间。添加Count(*)返回1,因为返回了1行。我知道我以前看到过这个,请检查:如果是重复的,请将其标记为重复。