MySQL ..如果COUNT返回大于0的任何值,则返回\'1\'

问题描述

|| 我正在尝试创建实质上返回true或false的MySQL查询。我想跑步
SELECT COUNT(id) 
  FROM comments  
 WHERE comment_date >= 1306904400 
   AND user_id = 1 
因此,如果该用户本月在论坛上发布了10次,我希望它只返回1,否则我希望它返回0表示他们还没有。 在sql中有效吗?     

解决方法

        如果您不介意MySQL特定的内容,则可以使用
IF
select if(count(id) >= 10,1,0)
from comments
where comment_date >= 130690440
  and user_id = 1
或MySQL布尔值(对于true为1,对于false为0):
select count(id) >= 10
from comments
where comment_date >= 130690440
  and user_id = 1
如果您想坚持使用标准SQL,那么
CASE
是您的朋友:
select case when count(id) >= 10 then 1 else 0 end
from comments
where comment_date >= 130690440
  and user_id = 1
    ,        使用
CASE
SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END AS `flag`
FROM `comments`
WHERE `comment_date` >= 1306904400 AND `user_id` = 1
    ,        您无需计算所有匹配记录,只需查找是否存在。不幸的是,MySQL似乎不像Microsoft SQL Server那样支持ѭ8。但是,您可以使用带有ѭ9的子选择来伪造它:
SELECT COUNT(1) AS has_comments FROM (SELECT id FROM comments WHERE comment_date >= 1306904400 AND user_id = 1 LIMIT 0,1) t;
    ,        我知道这是一个旧线程,但这是完成此操作的另一种方法:
SELECT COUNT(id),1 % (1 + count(id)) as greaterThanZero
  FROM comments
WHERE comment_date >= 1306904400 AND user_id = 1
    ,        也许:
SELECT (SELECT COUNT(id) FROM comments  
WHERE comment_date >= 1306904400 AND user_id = 1) > 10
    ,        我使用LIMIT做类似的事情,然后在我的代码中对其进行评估。找到10个匹配项后,SQL将停止。
SELECT id FROM {mytable}
WHERE comment_date >= 1306904400
AND user_id = 1
LIMIT 10
PHP要求至少10个帖子。
if(my_db_query() != 10)
    not_enough_posts();
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...