我正在尝试在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中单独完成(随意解释为什么它不可行,所有人都可以装置)
答案 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;