2012-08-13 10 views
6

मेरे पास निम्न क्वेरी है।mysql - गिनती शून्य से अधिक होने पर सही चुनें

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

अब, जब गिनती शून्य से अधिक है मैं, true बाकी false का चयन करने के बजाय क्वेरी परिणाम के रूप में गिनती के चाहते हैं। उसको कैसे करे?

उत्तर

14

इस प्रयास करें की जरूरत है:

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 में unquoted 'TRUE' /' FALSE' मानों का उपयोग कर सकते हैं। –

+1

अगर मैं इसे अनदेखा नहीं करूँगा तो यह केवल 1 और 0 लौटाएगा। –

+0

हां, मुझे पता है, MySQL ने बूलियन डेटाटाइप को बिल्कुल लागू नहीं किया है और एसक्यूएल मानक इसे जरूरी नहीं मानता है। लेकिन यह दो स्ट्रिंग मानों ('सत्य'/'झूठी') में से एक प्राप्त करने से अभी भी बेहतर है, दोनों प्रोग्रामिंग भाषा में चेक किए जाने पर 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 

या आप शब्दों true और false

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

क्यों उपयोग के मामले जब 'IF' कम किया गया है चाहते हैं? –

+1

आप या तो चुन सकते हैं। मुझे 'केस' बेहतर पसंद है। बस इतना ही। –

1
SELECT COUNT(*) > 0 AS has_offers 
    FROM restaurants_offers 
WHERE DATE(NOW()) 
    BETWEEN date_start 
    AND date_end 
AND restaurant_id =1 
संबंधित मुद्दे