[英]insert or replace into table2 from table1
我想使用“插入” mysql命令將table1的內容移至table2,但是table2可能具有“相同的”主鍵。 我想在執行insert語句時用table1的記錄替換table2的記錄(具有相同的主鍵)。 我可以使用“或替換”來實現嗎?
嘗試這樣的事情(不知道確切的架構,這只是一個例子)
INSERT INTO tbl_a (a,b,c)
SELECT a,b,c FROM tbl_b
ON DUPLICATE KEY UPDATE b = tbl_b.b, c = tbl_b.c
來自INSERT on DUPLICATE
的文檔
如果您指定ON DUPLICATE KEY UPDATE,並且插入一行會導致UNIQUE索引或PRIMARY KEY中的值重復,那么將執行舊行的UPDATE
使用INSERT ... SELECT和ON DUPLICATE KEY UPDATE子句:
INSERT INTO table2
SELECT * FROM table1 ON DUPLICATE KEY UPDATE table2.field1 = table1.field1
請注意,為簡便起見, 請使用*,但在update子句中,您必須分別指定字段,並且還應在insert和select子句中指定。
如果在表2中與表1中的鍵重復的主鍵未被其他地方的外鍵引用,則最簡單的方法是使用REPLACE ... INTO :
“ REPLACE的工作方式與INSERT完全相同,不同之處在於,如果表中的舊行與PRIMARY KEY或UNIQUE索引的新行具有相同的值,則在插入新行之前刪除該舊行。”
因此,您將執行以下操作:
REPLACE INTO table2 (a, b, c)
SELECT a, b, c FROM table1;
它將為您整理鍵,因此table2
與table1
中的行具有相同ID的任何行都將被table1
的行數據覆蓋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.