MySQL SELECT COUNT> 0作为布尔值

时间:2013-05-01 09:35:42

标签: mysql

我正在尝试在select语句的列中获取true / false值,该值指示计数是否> 0。

我阅读了这些文档:http://dev.mysql.com/doc/refman/5.1/en/expressions.html

我不完全理解,但他们似乎表明我可以使用'>>'在我的表达中。

所以我尝试了这个:

SELECT COUNT(*)>>0 AS my_bool FROM table GROUP BY id;

它会运行并且不会生成错误或警告,但my_bool列只包含COUNT(*)的结果。 我正在尝试做什么,如果是这样的话?

PS是的我知道我可以在处理结果的代码中测试x> y,我想知道它是否可以在MySQL中单独完成(随意解释为什么它不可行,所有人都可以装置)

5 个答案:

答案 0 :(得分:19)

在您的示例中,您没有使用greater than运算符,而是使用bit shift (>>)。如果你使用

SELECT COUNT(*) > 0 AS my_bool FROM table GROUP BY id;

my_bool将包含0或1作为布尔值。

答案 1 :(得分:4)

使用if条件检查并返回true / false。

示例:

SELECT if(COUNT(*)>0,'true','false') AS my_bool FROM table GROUP BY id;

如果将检查计数值是否大于0,则返回true,否则返回false。

答案 2 :(得分:1)

尝试以下方法:

SELECT (COUNT(*) <> 0) AS my_bool 
FROM table 
GROUP BY id;

答案 3 :(得分:1)

虽然我认为Gene的答案更好,但你也可以使用子查询来做到这一点:

SELECT (
    SELECT COUNT(*) AS my_bool FROM table GROUP BY id
 ) != 0;

如果COUNT(*)为零,则查询返回0,否则返回1.

答案 4 :(得分:1)

你可以这样做 -

SET @countValue = (SELECT COUNT(*) FROM table GROUP BY id);  
if @countValue > 0
    return 1;
else
    return 0;