Sql-Server

查詢以將數據插入列並檢查這些列數據的預先存在的值

  • February 1, 2019

我的表 t1 和 t2 在兩個表(a 列和 b 列)中具有相同的列名。我想將 t2 中的 a 列和 b 列的數據輸入到 t1 中,同時檢查天氣 t1 中預先存在的任何數據。如果 a 和 b 列中已經存在數據,則不要輸入該數據。我的主要挑戰是,我想使用(a 和 b)列數據的組合來檢查預先存在的值。提前感謝您的寶貴時間。

SQL 伺服器:

INSERT INTO t1 (a,b) 
SELECT a, b 
FROM t2
EXCEPT
SELECT a, b 
FROM t1 

EXCEPT運算符比較兩個查詢的結果集,並消除第一個結果集中與第二個結果集中匹配的那些行。它使用完全匹配來辨識和消除行。

當然還有其他選項,例如MERGE或在 WHERE 子句中使用NOT EXISTS,但是,對於諸如此 EXCEPT 之類的簡單查詢可能會執行得更好。

mysql

將唯一鍵添加到表 t1 的欄位 a 和 b 的組合中

ALTER TABLE `t1` 
ADD UNIQUE INDEX `un_indx` (`a` ASC, `b` ASC);

然後將忽略表 t2 中的數據插入到表 t1

insert ignore t1(a,b) select a,b from t2;

它將忽略違反唯一鍵條件的數據並插入其餘數據。

引用自:https://dba.stackexchange.com/questions/228506