[英]insert values into a table if the value does not exist
我正在嘗試將值插入到一個表中,如果值不存在,那么它應該插入它們,但是我遇到了這個 SQL 的問題。
insert into table1 (id, name, value)
select Id, Name, Value
from table2
where NOT EXISTS typeId = TypeId;
應該是這樣的:
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);
這就是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<> 在這里小提琴
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.