我今天遇到了这个错综复杂的SQL,请不要挂断它的作用。
SELECT CASE
WHEN count(*) >= 1
THEN 1
ELSE 0
END
WHERE 1 = 1
通过“复杂”我的意思是它似乎产生与此完全相同的结果:
SELECT 1
但这个问题并不是为什么它是这样写的。
我的问题是为什么允许上述原因。如果没有涉及表格,它如何使用count(*)
?算什么?
上面的查询执行并返回1,我的初步反应是“这不可行”,但确实如此。
为什么?
答案 0 :(得分:1)
同样有效的原因:
Select GetDate()
在这种情况下,将返回包含当前系统日期和时间的单行。添加Count(*)返回1,因为正在返回1行。