簡體   English   中英

從table1插入或替換到table2

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

它將為您整理鍵,因此table2table1中的行具有相同ID的任何行都將被table1的行數據覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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