2013-05-01 6 views
5

मैं एक चयन कथन में एक कॉलम में एक वास्तविक/झूठा मान प्राप्त करने का प्रयास कर रहा हूं जो इंगित करता है कि कोई गणना> 0 है या नहीं।MySQL SELECT COUNT> 0 को बूलियन मान

मैं इन डॉक्स पढ़ें: http://dev.mysql.com/doc/refman/5.1/en/expressions.html

कौन सा मैं पूरी तरह से समझ में नहीं आता, लेकिन वे मैं अपने अभिव्यक्ति में इस्तेमाल कर सकते हैं '>>' इंगित करने के लिए लग रहा था।

तो मैं इस कोशिश की:

SELECT COUNT(*)>>0 AS my_bool FROM table GROUP BY id; 

यह चलाता है और does not त्रुटि या चेतावनी उत्पन्न, तथापि my_bool स्तंभ सिर्फ COUNT(*) के परिणाम शामिल हैं। क्या मैं संभव करने की कोशिश कर रहा हूं, यदि ऐसा है तो कैसे?

पीएस हाँ मुझे पता है कि मैं अपने कोड में एक्स> वाई के लिए परीक्षण कर सकता हूं जो परिणामों को संभालता है, मैं जानना चाहता हूं कि यह कुछ ऐसा है जो अकेले माईएसक्यूएल में किया जा सकता है (यह समझाने के लिए स्वतंत्र महसूस करें कि इसकी सलाह क्यों नहीं दी जाती है सभी साधन)

उत्तर

16

अपने उदाहरण में आप greater than ऑपरेटर का उपयोग नहीं कर रहे हैं, लेकिन bit shift (>>)। यदि आप

SELECT COUNT(*) > 0 AS my_bool FROM table GROUP BY id; 

my_bool में 0 या 1 बूलियन मान के रूप में उपयोग किया जाएगा।

+0

दोह! हाँ अब facepalming। मुझे याद है कि यह कोशिश कर रहा है और यह काम नहीं कर रहा है, यही कारण है कि मैंने इसे पहले कोशिश नहीं की: एस मुझे स्वीकार करेगा जब एस मुझे देता है :) धन्यवाद – jammypeach

1

निम्नलिखित का प्रयास करें:

SELECT (COUNT(*) <> 0) AS my_bool 
FROM table 
GROUP BY id; 
4

की जाँच करें और वापस जाने के सही/गलत करने के लिए अगर हालत का प्रयोग करें।

उदाहरण:

SELECT if(COUNT(*)>0,'true','false') AS my_bool FROM table GROUP BY id; 

तो जाँच करेगा कि अगर गिनती मूल्य है 0 से अधिक तो सच लौट किसी और अवास्तविक लौटाते।

+0

मुझे यह जवाब पसंद है – newUserNameHere

+0

@newUserNameHere धन्यवाद, जैसे। –

1

जबकि मुझे लगता है कि जीन का जवाब बेहतर से एक है, तो आप भी एक सबक्वेरी यह करने के लिए इस्तेमाल कर सकते हैं:

SELECT (
    SELECT COUNT(*) AS my_bool FROM table GROUP BY id 
) != 0; 

तो COUNT(*) शून्य है, क्वेरी 0 देता है, अन्यथा 1.

1

आप कर सकते थे ऐसा करें -

SET @countValue = (SELECT COUNT(*) FROM table GROUP BY id); 
if @countValue > 0 
    return 1; 
else 
    return 0; 
संबंधित मुद्दे