Oracle
在 Oracle 中將 INSERT 或 REPLACE INTO + SELECT 作為源
我有兩張桌子A和B。
我想將 B 的內容插入到表 A 中。問題是 B 中有一行已經存在於 A 中。
我已經搜尋過,我找到了一些關於 MERGE 的答案,但是沒有人說如何將它與 SELECT 作為源一起使用。
總之,我想用這個語句
INSERT INTO A (data1, data2, dataX) SELECT B.data1, 'String', B.data2, B.data3 FROM B;
但避免現有行。
謝謝!
表 1:A(數據 1、數據 2、數據 3)
表 2:B(數據 1、數據 2、數據 3)
假設:兩個表的第一個欄位名都是主鍵
MERGE INTO A TA USING (SELECT * FROM B) TB ON (TA.DATA1 = TB.DATA1) WHEN NOT MATCHED THEN INSERT (TA.DATA1, TA.DATA2, TA.DATA3) VALUES (TB.DATA1, TB.DATA2, TB.DATA3);
在這種情況下,您不必使用
MERGE
. 假設data1
列可以用來檢查記錄是否存在,下面應該做的工作:INSERT INTO A (data1, data2, dataX) SELECT B.data1, B.data2, B.data3 FROM B b WHERE NOT EXISTS ( SELECT NULL FROM A a WHERE a.data1=b.data1 );