让我们说你想做以下几点事情:
SELECT CASE
WHEN (SELECT COUNT(id) FROM table WHERE column2 = 4) > 0
THEN 1 ELSE 0 END
基本上只有当表中有一行或多行时返回1,否则返回0。必须有一种语法正确的方法来做到这一点。可能是什么?谢谢!
答案 0 :(得分:27)
问题:当表中有一行或多行时返回1,否则返回0 :
在这种情况下,不需要COUNT
。相反,请使用EXISTS
,而不是计算所有记录,只要找到任何就会返回,这会更好:
SELECT CASE
WHEN EXISTS (SELECT 1 FROM table WHERE column2 = 4)
THEN 1
ELSE 0
END
答案 1 :(得分:3)
1
。这可以使用the sign
function来修复,从而产生更紧凑的解决方案:
SELECT sign(count(*)) FROM table WHERE column2 = 4
我发布了这个,因为我找到它并且有趣的方法。在制作中,我通常会得到一些接近RedFilter答案的东西。
答案 2 :(得分:-7)
你可以这样做:
SELECT CASE WHEN COUNT(ID) >=1 THEN 1 WHEN COUNT (ID) <1 THEN 0 END FROM table WHERE Column2=4