ฉันมีสองตารางต่อไปนี้:
Table1
----------
ID Name
1 A
2 B
3 C
Table2
----------
ID Name
1 Z
ฉันต้องใส่ข้อมูลจากการTable1
Table2
ฉันสามารถใช้ไวยากรณ์ต่อไปนี้:
INSERT INTO Table2(Id, Name) SELECT Id, Name FROM Table1
อย่างไรก็ตามในกรณีของฉัน ID ที่ซ้ำกันอาจมีอยู่ในTable2
(ในกรณีของฉันมันเป็นแค่ " 1
") และฉันไม่ต้องการคัดลอกอีกครั้งเพราะจะทำให้เกิดข้อผิดพลาด
ฉันสามารถเขียนสิ่งนี้:
IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1)
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1
ELSE
INSERT INTO Table2 (Id, name) SELECT Id, name FROM Table1 WHERE Table1.Id<>1
มีวิธีที่ดีกว่านี้โดยไม่ใช้IF - ELSE
หรือไม่? ฉันต้องการหลีกเลี่ยงสองINSERT INTO-SELECT
คำสั่งตามเงื่อนไขบางประการ