में शामिल है मुझे एक दृश्य के साथ समस्या है जिसे मैं बनाना चाहता हूं। मेरे पास बाएं बाहरी जुड़ने में दो टेबल शामिल हैं, tableA
और tableB
कहें, जहां tableB
बाहरी शामिल हो गया है।एसक्यूएल जहां बाएं बाहरी के लिए खंड
मैं केवल तालिका बी से उन पंक्तियों का चयन करना चाहता हूं जहां राज्य 4 बराबर है, इसलिए मैं अपनी क्वेरी में WHERE state = 4
जोड़ता हूं। अब परिणाम सेट को थोड़ा सा छंटनी की जाती है क्योंकि tableB
में मिलान करने वाली पंक्ति के बिना सभी पंक्तियां परिणाम से हटा दी जाती हैं (क्योंकि राज्य उन पंक्तियों के लिए 4 नहीं है)। मैंने WHERE state = 4 OR state IS NULL
भी कोशिश की, यह काम नहीं करता है (क्योंकि state
तकनीकी रूप से NULL
नहीं है जब कोई राज्य नहीं है)।
तो मुझे जो चाहिए वह WHERE
कथन है जिसका मूल्यांकन केवल एक पंक्ति होने पर ही किया जाता है, क्या ऐसी चीज मौजूद है?
यदि मुझे दो विकल्प नहीं दिखते हैं: join (SELECT * FROM tableB WHERE state = 4)
तालिका बी के बजाय, या उसी WHERE
कथन के साथ एक दृश्य बनाएं और इसके बजाय इसमें शामिल हों। प्रदर्शन के अनुसार सबसे अच्छा विकल्प क्या है?
यह SQL सर्वर 2008 R2 वैसे है।
यह बाहर काम करने की कोशिश के लिए रुचिकर होगी क्यों 'जहां राज्य = 4 या राज्य NULL', काम नहीं करता है, क्योंकि यह बाईं रोकने चाहिए है एक आंतरिक में परिवर्तित किया जा रहा शामिल होने के में शामिल हो। –
@Damien_The_Unbeliever - यह आपको TableA से सभी पंक्तियों को टेबलबी में नहीं देगा, लेकिन उन पंक्तियों पर नहीं जहां टेबलए में टेबलबी का मिलान है, जहां राज्य <> 4. http://data.stackexchange.com/stackoverflow/qt/110316/ –
@ Damien_The_Unbeliever: 3 राज्य हैं: राज्य = 4 के साथ मिलान, राज्य के साथ मिलान <> 4, कोई मैच – gbn