我正在编写一个简单的case语句,如果返回的行数为1或更多,则返回值1,如果没有找到,则返回0。
我在下面列出的简单查询
中收到语法错误 SELECT CASE (select count(*) from account where account_id = 12 >0) then 1 else 0 end;
答案 0 :(得分:0)
如果条件为 TRUE ,则MySQL返回1
;如果 FALSE
0
SELECT count(*) >= 1
from account
where account_id = 12
答案 1 :(得分:0)
在查询
中我发现我错过了这个词 SELECT CASE (select count(*) from .account where account_id = 12 >0) when true then 1 else 0 end;
答案 2 :(得分:0)
此
SELECT CASE (select count(*) from .account where account_id = 12 >0) when true then 1 else 0 end;
只有语法上有效,因为你错误地将12与0进行比较。这肯定是一种改进:
SELECT CASE ((select count(*) from .account where account_id = 12) > 0) when true then 1 else 0 end;
但是,为什么在可以测试存在时需要计算所有记录:
SELECT CASE (exists (select 1 from .account where account_id = 12)) when true then 1 else 0 end;
如果存在,最后一个将找到第一个这样的行,如果是,则返回一个,否则返回0.