我正在嘗試將值插入到一個表中,如果值不存在,那么它應該插入它們,但是我遇到了這個 SQL 的問題。
insert into table1 (id, name, value)
select Id, Name, Value
from table2
where NOT EXISTS typeId = TypeId;
uj5u.com熱心網友回復:
應該是這樣的:
INSERT INTO table1 (id, name, VALUE)
SELECT id, name, VALUE
FROM table2 b
WHERE NOT EXISTS
(SELECT NULL
FROM table1 a
WHERE a.typeid = b.typeid);
uj5u.com熱心網友回復:
這就是MERGE陳述句擅長的地方:
MERGE INTO table1 dst
USING table2 src
ON (src.typeID = dst.typeID)
WHEN NOT MATCHED THEN
INSERT (id, name, value) VALUES (src.Id, src.Name, src.Value);
其中,對于樣本資料:
CREATE TABLE table1 (id PRIMARY KEY, typeid, name, value) AS
SELECT 2, 2, 't1-name2', 2 FROM DUAL UNION ALL
SELECT 4, 4, 't1-name4', 4 FROM DUAL;
CREATE TABLE table2 (id PRIMARY KEY, typeid, name, value) AS
SELECT 1, 1, 't2-name1', 1 FROM DUAL UNION ALL
SELECT 2, 2, 't2-name2', 2 FROM DUAL UNION ALL
SELECT 3, 3, 't2-name3', 3 FROM DUAL UNION ALL
SELECT 4, 4, 't2-name4', 4 FROM DUAL UNION ALL
SELECT 5, 5, 't2-name5', 5 FROM DUAL;
然后,在MERGE:
SELECT * FROM table1;
輸出:
ID 型別ID 姓名 價值 2 2 t1-名稱2 2 4 4 t1-name4 4 3 t2-name3 3 5 t2-name5 5 1 t2-名稱1 1
(注意:您可能希望包含TYPEID在您插入的列中。)
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/341143.html
上一篇:Oracle檢查巨大的插入進度
