निष्पादित कि अगर ऑडियो कि पैरेंट आईडी के लिए संपूर्ण स्तंभ के लिए मौजूद हैं तुम बस count
सभी पंक्तियों जिसके लिए audio
NULL
नहीं है सकता है। लेकिन यदि आपकी मेज बड़ी है और इसमें कई पंक्तियां हैं। तो इस दृष्टिकोण के साथ वास्तविक समस्या यह है कि ऐसी क्वेरी डीबी के लिए महंगा हो सकती है और कम से कम धीमी हो सकती है। बेशक समय से पहले अनुकूलन बुरी बात है, लेकिन इस मामले में नहीं है - हम दृष्टिकोण अनुकूलन करने के लिए जा रहे हैं, नहीं कोड :)
ऑडियो स्तंभ के लिए सशर्त स्विच करने के लिए करता है, तो सभी पंक्तियों खाली हैं चाहते
सबसे पहले, यह प्रश्न are all rows' audio column empty?
पर विचार करना अच्छा होगा, यह वास्तव में सही है। और नहीं। यह नहीं है :) वास्तव में आपको how many of rows are not null
और न ही are all rows' audio column empty?
जानने की आवश्यकता है क्योंकि यह पूरी तरह से आपकी स्थिति के लिए अप्रासंगिक है, यदि 5, 10 या 100000 है। आपको क्या करना चाहिए प्रश्न को "फ़्लिप" करना और if there's any row that is NOT null?
जैसे प्रश्न के उत्तर की तलाश करना है। और यहां तक कि दोनों प्रश्न भी पहली नज़र में समान दिखते हैं, हम उत्तर पाने के लिए डेटाबेस का उपयोग कर रहे हैं, इसलिए यह वास्तव में संपूर्ण गेम परिवर्तक है।
तर्क के आधार पर if there's any row that is NOT null?
सवाल यह सिर्फ यह पता लगाने के लिए पर्याप्त है जवाब देने के लिए अगर वहाँ कम से कम एक audio
जा रहा है NOT NULL
साथ पंक्ति। "कम से कम" चीज हमें क्वेरी में कुछ बाधाओं को लागू करने की अनुमति देती है, क्योंकि 1
अच्छी तरह से "कम से कम एक" स्थिति को पूरा करता है, हम एसक्यूएल LIMIT 1
का उपयोग करेंगे, जो डीबी को रोक देगा और परिणाम को वापस लौटाएगा जैसे ही यह पहला रिकॉर्ड मिल जाएगा क्वेरी, w/o पूरी मेज के माध्यम से जाने की जरूरत है। यह बस तेज होना चाहिए, और कम संसाधन भूखा होना चाहिए।
एक बार निष्पादित हो जाने पर, हमारी क्वेरी दो परिणाम लौटा सकती है। या तो हमें कुछ भी नहीं मिला (शून्य पंक्तियां लौटाई गईं), जिसका अर्थ है कि सभी audio
NULL
हैं या इसके विपरीत, हमें कुछ मिलता है (एकल पंक्ति, कोई फर्क नहीं पड़ता) जिसका अर्थ है if there's any row that is NOT null?
प्रश्न का उत्तर है 'हाँ, यह है '(क्योंकि कम से कम एक लौटा है)।
स्रोत
2013-04-04 18:12:04
लेकिन इस छवि में तरह
NOT NULL
पंक्तियों के लिए सरल जांच केवल 3 पंक्तियों जो 10 या 15 या अधिक .. उस मामले में क्या हो सकता है? मैं सिर्फ यह जांचना चाहता हूं कि पैरेंट आईडी के लिए कोई ऑडियो फ़ील्ड उपलब्ध है या नहीं। यदि कोई एकल फ़ील्ड सत्य नहीं होने से शून्य नहीं है। कोई उपाय? – Artistअपने चयन परिणामों को अपनी मूल आईडी को 'WHERE parentid = 1' –
वेबनेटमोबाइल के साथ साझा करने के लिए बस संकीर्ण करें। मेरा से बेहतर जवाब। सर्वर लोड को कम करने के लिए उपस्थित होने के लिए सबसे अच्छा, यहां तक कि छोटी चीजों के साथ, ताकि आप इसकी आदत में हों। –