11

我试图在选择语句的列中获取真/假值,该值指示计数是否> 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 中完成(请随时解释为什么不建议这样做)

4

5 回答 5

29

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

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

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

于 2013-05-01T09:40:07.443 回答
7

使用 if 条件检查并返回真/假。

例子:

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

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

于 2013-05-01T09:41:04.077 回答
1

尝试以下操作:

SELECT (COUNT(*) <> 0) AS my_bool 
FROM table 
GROUP BY id;
于 2013-05-01T09:40:33.243 回答
1

虽然我认为 Gene 的答案更好,但您也可以使用子查询来执行此操作:

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

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

于 2013-05-01T09:41:46.143 回答
1

你可以这样做——

SET @countValue = (SELECT COUNT(*) FROM table GROUP BY id);  
if @countValue > 0
    return 1;
else
    return 0;
于 2013-05-01T09:45:04.680 回答