मैं हमेशा UNION
SQL में ऑपरेटर के बारे में जानता हूं , लेकिन हाल ही में पता चला कि अन्य सेट ऑपरेटर थे, INTERSECT
और EXCEPT
। मुझे ऐसा ऑपरेटर नहीं मिला है जो चौथा बड़ा सेट ऑपरेटर, सममित अंतर (उदाहरण के विपरीत INTERSECT
) करता है।
ऐसा लगता है कि मैं कुछ का उपयोग करके वांछित आउटपुट प्राप्त कर सकता हूं
SELECT Field FROM A UNION SELECT Field FROM B
EXCEPT
SELECT Field FROM A INTERSECT SELECT Field FROM B
(यह मानकर कि मुझे पूर्ववर्ती अधिकार मिला है), या एक पूर्ण-विरोधी कार्य करके:
SELECT A.Field, B.Field
FROM A
FULL JOIN B ON B.Id = A.Id
WHERE B.Id IS NULL OR A.Id IS NULL
लेकिन वे दोनों गहन प्रश्नों की तरह दिखते हैं, विशेष रूप से अन्य तीन बुनियादी सेट संचालन की तुलना में। एसक्यूएल में एक सममित अंतर ऑपरेशन है और मैं इसे दस्तावेज में नहीं ढूंढ सकता हूं? या टी-एसक्यूएल में इसे लागू करने का एक "विहित" तरीका है?
FULL JOIN
अधिक कुशल हो सकता है। परीक्षण से पता चल सकता है कि कौन सा सबसे अच्छा है। और हां, अगर प्रत्येक टेबल से अधिक / अलग कॉलम की जरूरत है, तो मेरा समाधान आसानी से विस्तार योग्य नहीं है।
(a EXCEPT b) UNION ALL (b EXCEPT a);
अधिक कुशल हो सकता है।