mysql - 如何在 MySQL 中合并 2 个表?

标签 mysql sql replace insert

我想合并 2 个 MySQL 表而不添加相同的行。 我有 2 个表,列相同但行不同,例如。

table_1
+-------+--------+------+
| Name  | ResNum | Code | 
+-------+--------+------+
| User1 | 25BAM8 | PAR1 |
| User2 | E26J09 | COP3 |
+-------+--------+------+

table_2
+-------+--------+------+
| Name  | ResNum | Code | 
+-------+--------+------+
| User1 | 25BAM8 | PAR1 |
| User3 | 34VNS2 | PAR1 |
| User4 | EZQVG5 | COP3 |
+-------+--------+------+

我想在将 table_2 合并到 table_1 时得到这个:

table_1
+-------+--------+------+
| Name  | ResNum | Code | 
+-------+--------+------+
| User1 | 25BAM8 | PAR1 |
| User2 | E26J09 | COP3 |
| User3 | 34VNS2 | PAR1 |
| User4 | EZQVG5 | COP3 |
+-------+--------+------+

我已经尝试使用 INSERT IGNORE INTO 和 REPLACE INTO 命令,但它会复制现有的行,就像这样:

table_1
+-------+--------+------+
| Name  | ResNum | Code | 
+-------+--------+------+
| User1 | 25BAM8 | PAR1 |
| User1 | 25BAM8 | PAR1 |
| User2 | E26J09 | COP3 |
| User3 | 34VNS2 | PAR1 |
| User4 | EZQVG5 | COP3 |
+-------+--------+------+

如有任何帮助,我们将不胜感激。

最佳答案

一个简单的解决方案是在 table_1 的名称上放置一个临时的 UNIQUE 索引:

CREATE UNIQUE INDEX unique_name ON table_1(Name)

要传输实际行,请使用 SELECT INSERT:

INSERT INTO table_1(Name, ResNum, Code) SELECT Name, ResNum, Code FROM table_2.

然后删除 UNIQUE 索引:

DROP INDEX unique_name ON table_1

关于mysql - 如何在 MySQL 中合并 2 个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202931/

相关文章:

mysql - 在 MySQL 中替换为 : Different values from a table to be replaced by "XXX"

mysql - 一对多关系。必须是比使用子查询更好的方法

sql - 如何在 SQL 中编写允许一系列字符串或空白值的 CHECK 约束?

php - 使用 PHP 中的链接\按钮将 Mysql 数据导出到 MS Excel

python - peewee mysql SSL : CERTIFICATE_VERIFY_FAILED

sql - 新手请教一个关于数据库事务的问题

regex - 在Visual Studio中使用正则表达式(regex)查找和替换?

java - 替换字符串从 <\开始

mysql - 为什么 MySQL InnoDB 日志文件会产生如此大的 HDD 负载?

mysql - Codeigniter:如何获取最后插入的 ID?