2013-02-14 21 views
6

में अलग-अलग व्यवहार में अंतर नहीं है और नहीं, मैंने सोचा NOT IN एक प्रश्न में != जैसा व्यवहार करता है। लेकिन != का उपयोग कर एक प्रश्न एक प्रश्न NOT IN का उपयोग कर अधिक से अधिक पंक्तियों रिटर्न:एसक्यूएल क्वेरी

SELECT count(A.NO) 
FROM A 
WHERE 
A.CODE != 'a' 
AND 
A.CODE != 'b' 
AND 
A.CODE != 'c' 
AND 
A.NAME != 'd' 
AND 
A.NAME != 'e' 

रिटर्न 1566 पंक्तियाँ, जबकि

SELECT count(A.NO) 
FROM A 
WHERE 
A.CODE NOT IN ('a','b','c') 
AND 
A.NAME NOT IN ('d','e') 

रिटर्न केवल 1200 पंक्तियाँ।

मुझे लगता है कि NOT INNULL मानों को शामिल करता है - क्या यह एकमात्र अंतर होगा?

+2

आप कुछ डेमो डेटा – Akash

+2

प्रदान कर सकते हैं A.CODE या A.NAME एक शून्य मूल्य, अपने में भी नजरअंदाज कर दिया कहां खंड – Akash

+2

सवाल का जवाब देने का सबसे आसान तरीका, बाहर 366 मुद्रित करने के लिए है है पंक्तियां जो पहली क्वेरी में हैं लेकिन दूसरे में नहीं हैं। A.CODE और A.NAME के ​​मानों को देखें। – byteherder

उत्तर

2

मैंने this सरलीकृत एसक्यूएल फिडल का उपयोग कर समस्या को दोबारा करने की कोशिश की है, हालांकि, यह दोनों संस्करणों के लिए समान संख्या देता है।

आपके डेटा के बारे में क्या अंतर है?

+0

मैं अनुमान लगा रहा हूं कि प्रश्न थोड़ा अलग थे - कॉलम में सबसे अधिक संभावना 'गिनती()' फ़ंक्शन को पास की गई। –

0

कोई जवाब नहीं लेकिन निम्नलिखित क्या प्रदान करता है?

SELECT * 
FROM A 
WHERE 
A.CODE != 'a' 
AND 
A.CODE != 'b' 
AND 
A.CODE != 'c' 
AND 
A.NAME != 'd' 
AND 
A.NAME != 'e' 
AND NOT (
    A.CODE NOT IN ('a','b','c') 
    AND 
    A.NAME NOT IN ('d','e') 
) 
LIMIT 0, 20 
संबंधित मुद्दे