簡體   English   中英

如果值不存在,則將值插入表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM