আমি সবসময় UNIONএসকিউএল-তে অপারেটর সম্পর্কে জানতাম , তবে কেবল সম্প্রতি আবিষ্কার করেছি যে অন্যান্য সেট অপারেটর ছিল, 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);আরও দক্ষ হতে পারে।