如何解决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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。