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中文网其他相关文章!