我有以下查询。mysql - 当count大于零时选择true
SELECT COUNT(*) AS offer_count
FROM restaurants_offers
WHERE DATE(NOW())
BETWEEN date_start
AND date_end
AND restaurant_id =1
现在,当计数大于零,我想选择别的true
false
,而不是数作为查询结果。怎么做?
我有以下查询。mysql - 当count大于零时选择true
SELECT COUNT(*) AS offer_count
FROM restaurants_offers
WHERE DATE(NOW())
BETWEEN date_start
AND date_end
AND restaurant_id =1
现在,当计数大于零,我想选择别的true
false
,而不是数作为查询结果。怎么做?
试试这个:
SELECT IF(COUNT(*) > 0, 'true', 'false') AS NewResult
FROM restaurants_offers
WHERE (DATE(NOW()) BETWEEN date_start AND date_end) AND
restaurant_id = 1
SELECT case when COUNT(*) > 0
then 1
else 0
end AS offer_count
FROM restaurants_offers
WHERE DATE(NOW())
BETWEEN date_start
AND date_end
AND restaurant_id =1
,或者如果你需要的话true
和false
SELECT case when COUNT(*) > 0
then 'true'
else 'false'
end AS offer_count
...
为什么使用情况下'IF'会一直短? – 2012-08-13 09:13:25
你也可以选择。我更喜欢'case'。就这样。 – 2012-08-13 09:14:42
SELECT COUNT(*) > 0 AS has_offers
FROM restaurants_offers
WHERE DATE(NOW())
BETWEEN date_start
AND date_end
AND restaurant_id =1
您可以在MySQL中使用不带引号的“TRUE”/“FALSE”值。 – 2012-08-13 09:31:09
它只会返回1和0,如果我不会引用它。 – 2012-08-13 09:34:30
是的,我知道MySQL根本没有实现布尔数据类型,SQL标准没有将它指定为必须的。但它比获取两个字符串值('true'/'false')中的一个还要好,如果在编程语言中检查,两者都将评估为TRUE。 – 2012-08-13 09:40:01