मान लें कि मेरे पास केवल एक कॉलम के साथ एक तालिका t1 है: id, और मेरे पास दो स्तंभों के साथ एक तालिका t2 है: id और Memo। मुझे t1 से उन id का चयन करने की आवश्यकता है, जिसके लिए t2 में कोई पंक्ति नहीं है जो निम्न दो स्थितियों t1.id = t2.id और t2.Memo = 'myText' दोनों को संतुष्ट करती है। मैं उसे कैसे कर सकता हूँ? मैंने join का उपयोग करने की कोशिश की है, लेकिन यह पंक्ति का चयन करता है जो कुछ शर्तों को पूरा करता है, जबकि मुझे इसके विपरीत की आवश्यकता है।

sql
1
Ilya 18 नवम्बर 2015, 10:36

3 जवाब

सबसे बढ़िया उत्तर
SELECT *
  FROM t1
 WHERE NOT EXISTS (SELECT 1
                     FROM t2
                    WHERE t2.id = t1.id
                      AND t2.Memo = 'myText')
1
hinotf 18 नवम्बर 2015, 07:46

इसे करने का एक तरीका LEFT JOIN का उपयोग करना है:

select id
from t1
left join t2
  on t1.id = t2.id and t2.Memo = 'myText'
where t2.id is null
0
Cristian Lupascu 18 नवम्बर 2015, 07:40

मैं आपके प्रश्न को समझने में अच्छा नहीं हूँ:

आपका मतलब है कि t1.id EX2 में t2 से संबंधित t2.Memo <> 'myText' है?

SELECT t1.id FROM t1 JOIN t2 
ON t1.id = t2.id
HAVING t1.id NOT IN (SELECT id FROM t2 WHERE Memo = 'myText');

या सभी t1.id या तो t2 या EXISTS में नहीं हैं, लेकिन मेमो <> 'myText'?

SELECT id FROM t1 WHERE id NOT IN (SELECT id FROM t2 WHERE Memo = 'myText');
0
Ken Cheung 18 नवम्बर 2015, 07:45