批量插入【对新数据进行插入操作,已存在的记录进行更新操作】

简介: 批量插入【对新数据进行插入操作,已存在的记录进行更新操作】

有这样一个需求:

第一次插入1,2

第二次插入1,3

要求结果为1,3的数据是有效的,2的数据是无效的

上述的表字段较少,实际开发场景表字段还会多好几倍


解决方案:将单表的字段进行md5加密得出一个版本id,后续只要插入的字段是一样的,那么加密出来的版本id肯定也是一样的。


插入之前先去库里查询版本id,是否和插入字段md5加密得出来的结果一样。


第一次插入直接入库,第二次插入发现有一条记录一样,说明插入的数据中有一条记录已经在数据库里面了。


如果一样说明这一批插入的数据在库里已经有了,不需要插入了。


第一次插入的1和第二次插入的1,他们二个的versionId是一样的,就不需要插入了。


如果不一样,则需要把之前插入的数据进行清洗。


第一次插入的2和第二次插入的3,他们二个的versionId是不一样的,需要将2改为无效,将3改为有效。


清洗步骤:


第一步:直接将库中所有的数据status状态改为无效。

1,2,3的status都改为无效2


第二步:将插入的数据status改为有效

1,3的status改为有效了,2还是无效


这样得出来的结果就符合需求了。


相关文章
|
6月前
|
SQL 关系型数据库 MySQL
数据的插入和查询
数据的插入和查询
|
关系型数据库 MySQL 数据库
在MySQL数据库中插入、更新与删除数据
在MySQL数据库中插入、更新与删除数据。
91 2
UPSERT操作只能对已经存在的分区进行更新或插入操作
UPSERT操作只能对已经存在的分区进行更新或插入操作
64 2
|
SQL 数据库 C语言
使用SQL语句实现数据插入、修改和删除操作
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句实现数据插入、修改和删除操作。
|
关系型数据库 MySQL 数据库
MySQL数据库:创建一个表,并执行插入、修改和删除数据操作
MySQL数据库:创建一个表,并执行插入、修改和删除数据操作
278 0
MySQL数据库:创建一个表,并执行插入、修改和删除数据操作
|
Java C语言
练习6—数据插入
练习6—数据插入
115 0
|
SQL 关系型数据库 MySQL
MySql数据库Update批量更新与批量更新多条记录的不同值实现方法
MySql数据库Update批量更新与批量更新多条记录的不同值实现方法
2141 0
插入、更新、删除表中的数据
插入、更新、删除表中的数据 笔记 (文中的姓名、电话等为随机编写的,如有冒犯,请多多包涵) >需求1 向科目表中添加数据,如表1 科目编号 科目名 课时数 年级编号 1 Logic Java 220 1 2 HTML 160 1 3 Java OOP 230 2 第一步,创建科目表subject,create table `subject`(.
1582 0