Mysql

將一個表中的某些行替換為另一個表的行

  • November 28, 2018

我有兩個表和一組主鍵值。我想用第二個表的相應(具有相同的主鍵)行替換第一個表的主鍵在此集中的所有行。

(這兩個表具有相同的結構。)

如何使用 MySQL 和 PHPMyAdmin 或更糟的命令行來做到這一點?

您可以假設兩個表對於集合中主鍵的每個值都有一行。

我們可以使用mysqldump --replace --where "..." db table. 它將輸出REPLACE語句。仍然需要對其進行編輯REPLACE以更改表名,然後執行此 SQL 程式碼。

UPDATE table1, table2
SET table1.field1 = table2.field1,
   table1.field2 = table2.field2,
--  .....   
   table1.fieldN = table2.fieldN
WHERE table1.id = table2.id
 AND table1.id IN ('id1', 'id2', /* ... */ 'idN' )

或者你可以使用

REPLACE table1
SELECT * 
FROM table2
WHERE table1.id IN ('id1', 'id2', /* ... */ 'idN' )

但是如果除了主索引之外還有任何其他唯一索引,它可能會產生不希望的干擾。

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