ฉันได้รู้จักกันเสมอเกี่ยวกับ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
แต่ทั้งคู่ดูเหมือนว่าข้อความค้นหาค่อนข้างเข้มงวดโดยเฉพาะอย่างยิ่งเมื่อเปรียบเทียบกับการดำเนินการพื้นฐานสามชุดอื่น ๆ มีการดำเนินการความแตกต่างแบบสมมาตรใน SQL และฉันไม่พบมันในเอกสารประกอบ? หรือมีวิธี "มาตรฐาน" ที่จะใช้ใน T-SQL?
FULL JOIN
อาจมีประสิทธิภาพมากกว่า การทดสอบสามารถเปิดเผยสิ่งที่ดีที่สุด และแน่นอนถ้าต้องการคอลัมน์เพิ่มเติม / ต่างจากแต่ละตารางโซลูชันของฉันไม่สามารถขยายได้อย่างง่ายดาย
(a EXCEPT b) UNION ALL (b EXCEPT a);
อาจมีประสิทธิภาพมากขึ้น