mysql - 如何将表 2 中的新行插入到表 1 中比较 ID?
问题描述
我想知道如何在表 2 的表 1 中插入新行。想法是,通过比较两个表,如果在第二个表中您没有在表 1 中找到相同的 ID,则会在表中插入新数据1.
这是两张表和我想做的想法:
Tabla 1
ID-Name-Surname
1-Oriol-Molina
Tabla 2
ID-Name-Surname
1-Oriol-Molina
2-Ricard-Martin
结果将是这样的:
Tabla 1
ID-Name-Surname
1-Oriol-Molina
2-Ricard-Martin
Tabla 2
ID-Name-Surname
1-Oriol-Molina
2-Ricard-Martin
解决方案
使用数据库来强制执行数据完整性。也就是说,如果您不想id
在表中重复 s,则声明一个唯一索引/约束:
create unique index unq_table1_id on table1(id);
然后,在 MySQL 中,您可以使用on duplicate key update
:
insert into table1 (id, name, surname)
select id, name, surname
from table2
on duplicate key update id = values(id);
最后的语句是无操作的——它除了防止错误之外什么都不做。
这种方法的优点是数据库将确保将数据插入表中的任何id
语句都是唯一的,而不仅仅是这个。
推荐阅读
- java - 谷歌标记不显示
- scala - 为什么我们需要比 Spark 中的机器数量更多的执行器?
- swift - 在 Swift 4 中字段为 X 的 Firebase 中获取文档
- android - Gradle Project Sync Failed 导致在 Android Studio 中安装 Firebase
- android - 定义服务或接收器时“android:process”的含义
- python - django模型没有创建postgresql表
- asynchronous - 飞镖中的未来队列
- maven - Maven 依赖,饼图
- asp.net-mvc - dbo.ASPNetUser 和其他类似的表不会出现在我的服务器资源管理器中
- javascript - 即使将画布放在脚本之前,也无法读取 null 的属性“getContext”