MySQL 表合併:完整指南
合併具有相同結構的兩個 MySQL 表,由於可能存在主鍵衝突,因此帶來了獨特的挑戰。然而,有一些有效的方法可以完成這項任務。
方法一:INSERT IGNORE
為了保留 table_1 中現有的行,只插入 table_2 中的新行,可以使用以下查詢:
<code class="language-sql">INSERT IGNORE INTO table_1 SELECT * FROM table_2;</code>
方法二:REPLACE
或者,如果您想用 table_2 中的對應行替換 table_1 中的現有行,同時插入新行,可以使用以下查詢:
<code class="language-sql">REPLACE INTO table_1 SELECT * FROM table_2;</code>
主鍵衝突的注意事項
INSERT IGNORE 和 REPLACE 方法對主鍵衝突的處理方式不同。 INSERT IGNORE 插入沒有衝突主鍵值的新行。 REPLACE 更新現有行,而不管主鍵衝突與否。
範例
考慮兩個表,table_1 和 table_2,它們包含以下資料:
table_1 | |
---|---|
id | name |
1 | John |
2 | Mary |
table_2 | |
---|---|
id | name |
1 | Mike |
2 | Sarah |
3 | Peter |
使用 INSERT IGNORE 查詢,結果如下:
table_1 | |
---|---|
id | name |
1 | John |
2 | Mary |
3 | Peter |
table_2 中具有匹配主鍵的行將被忽略,僅插入主鍵不存在的行。
使用 REPLACE 查詢,結果如下:
table_1 | |
---|---|
id | name |
1 | Mike |
2 | Sarah |
3 | Peter |
table_1 中具有匹配主鍵的行將被 table_2 中的對應行取代。
以上是如何合併具有相同結構的MySQL表並處理主鍵衝突?的詳細內容。更多資訊請關注PHP中文網其他相關文章!