2012-08-13 6 views
6

次のクエリがあります。カウントがゼロより大きい場合mysql - countが0より大きい場合にtrueを選択します。

SELECT COUNT(*) AS offer_count 
    FROM restaurants_offers 
WHERE DATE(NOW()) 
    BETWEEN date_start 
    AND date_end 
AND restaurant_id =1 

は今、私が代わりにクエリ結果としてカウント、truefalseを選択します。どうやってするか?

答えて

14

これを試してみてください必要がある場合: `はIF`が短くなってきたでしょう

SELECT IF(COUNT(*) > 0, 'true', 'false') AS NewResult 
    FROM restaurants_offers 
WHERE (DATE(NOW()) BETWEEN date_start AND date_end) AND 
     restaurant_id = 1 
+1

MySQLでは、引用符で囲まれていない 'TRUE' /' FALSE'の値を使用できます。 –

+1

私はそれを引用符で囲まない場合、単に1と0を返します。 –

+0

はい、わかっていますが、MySQLはブール型データ型をまったく実装しておらず、SQL標準ではそれを必須として指定していません。しかし、2つの文字列値( 'true'/'false')のいずれかを取得するよりも優れています。どちらもプログラミング言語でチェックされているとTRUEと評価されます。 –

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 

たり、言葉truefalse

SELECT case when COUNT(*) > 0 
      then 'true' 
      else 'false' 
     end AS offer_count 
... 
+0

なぜユースケースを? –

+1

いずれかを選択できます。私は 'case'が好きです。それで全部です。 –

1
SELECT COUNT(*) > 0 AS has_offers 
    FROM restaurants_offers 
WHERE DATE(NOW()) 
    BETWEEN date_start 
    AND date_end 
AND restaurant_id =1 
関連する問題