我有以下查詢。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