选择Count的MySql Case Query

时间:2016-10-31 19:28:33

标签: mysql

我正在编写一个简单的case语句,如果返回的行数为1或更多,则返回值1,如果没有找到,则返回0。

我在下面列出的简单查询

中收到语法错误
 SELECT CASE (select count(*) from account where account_id = 12 >0) then 1 else 0 end;

3 个答案:

答案 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.