Mysql
將一個表中的某些行替換為另一個表的行
我有兩個表和一組主鍵值。我想用第二個表的相應(具有相同的主鍵)行替換第一個表的主鍵在此集中的所有行。
(這兩個表具有相同的結構。)
如何使用 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' )
但是如果除了主索引之外還有任何其他唯一索引,它可能會產生不希望的干擾。