Mysql 实现批量插入对已存在数据忽略或更新

这篇具有很好参考价值的文章主要介绍了Mysql 实现批量插入对已存在数据忽略或更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Mysql 实现批量插入对已存在数据忽略/更新

一. 表的准备

CREATE TABLE `demo` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `name` varchar(10) DEFAULT NULL COMMENT '姓名',
  `age` int DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='demo表';

二. 实现

2.1 实现原理

对已存在的数据进行忽略/更新,需要唯一索引/主键。

唯一索引可为多个字段的联合索引,比如根据我提供的sql中,我需要``name+age`不重复,则可把这2个字段联合创建为唯一索引

创建联合唯一索引的sql

alter table table_name add unique index unique_index_name (field1,field2...);
  • 批量插入对已存在数据忽略

    insert ignore table_name (field1, field2...) values (value1, value2...),(value1, value2...);
    
  • 批量插入对已存在数据更新

    replace into  table_name (field1, field2...) values (value1, value2...),(value1, value2...);
    

笔者这里只举例第一种情况的demo

对已存在数据更新情况,读者自行练习

2.2 批量插入对已存在数据忽略

现在我们把name+age创建联合唯一索引

alter table demo add unique index unique_name_age (name,age);

Mysql 实现批量插入对已存在数据忽略或更新,mysql,数据库

新增索引后,我们开始批量插入数据

这里我们先制造2条数据,来判断我们批量插入是否能对已存在的数据进行忽略。

INSERT INTO `demo` (`id`, `name`, `age`) VALUES (1, '张三', 10);
INSERT INTO `demo` (`id`, `name`, `age`) VALUES (2, '李四', 10);

我们开始批量插入,对已存在数据进行忽略

insert ignore demo values (null, '张三',10),(null, '小黑',11);

运行过程

Mysql 实现批量插入对已存在数据忽略或更新,mysql,数据库

运行结果展示

Mysql 实现批量插入对已存在数据忽略或更新,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-551955.html

到了这里,关于Mysql 实现批量插入对已存在数据忽略或更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis新增数据,存在就更新,不存在就添加,Mysql避免重复插入数据的4种方式

    即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据。 即插入数据时

    2024年02月11日
    浏览(43)
  • 使用saveOrUpdateBatch实现批量插入更新数据

    saveOrUpdateBatch 是 Hibernate 中的一个方法,可以用来批量插入或更新数据。这个方法的参数是一个 List,里面可以存储多个实体对象。当 Hibernate 执行这个方法时,会检查每个实体对象是否存在主键,如果存在主键就执行 update 操作,否则执行 insert 操作。 使用 saveOrUpdateBatch 的代

    2024年02月11日
    浏览(75)
  • MYSQL不存在插入 存在更新的解决方法和对比

    设置主键id自增,name为唯一索引 /句: insert ignore into ,如果插入的数据会导致 UNIQUE索引 或 PRIMARY KEY 发生冲突/重复,则忽略此次操作/不插入数据,例: 这里已经存在 name=\\\'Jack”的数据,所以会忽略新插入的数据,受影响行数为 0,表数据不变 需要注意 主键会自增 当使用

    2024年02月02日
    浏览(35)
  • Java8 实现批量插入和更新,SpringBoot实现批量插入和更新,Mybatis实现批量插入和更新

    基于mybatis实现的批量插入和更新 由于直接执行批量所有数据可能会出现长度超出报错问题,使用如下方式即可解决 原理还是分配执行,这里的100就是设定每次执行最大数 这里使用插入作为例子,也可以使用批量更新 更新的写法

    2024年02月12日
    浏览(54)
  • Springboot Mybatis 不存在插入数据,存在则更新数据

    是不是经常看到代码, 查一下数据库,如果存在数据,就做更新语句调用; 如果不存在,就插入。 今天该篇介绍的 是使用     INSERT INTO        ON DUPLICATE KEY UPDATE        来实现我们上述的场景, 不需要自己再判断来判断去的。 ON DUPLICATE key update 是根据主键索引或者唯一

    2024年02月13日
    浏览(34)
  • JAVA实现存在更新不存在插入与及多余的进行删除(三)

    这个版本,主要是迭代重载了下save方法,不废话,直接上代码: 具体实现类对应的重载方法如下: 然后就是头部加多了 implements ICudDataServiceT, ApplicationContextAware。 通过这个ApplicationContextAware获取到所有bean服务,肤浅地以实体类拼凑一下服务名,找到bean服务就作为这个调用的

    2024年02月13日
    浏览(46)
  • MySQL如何实现数据批量更新

    最近需要批量更新大量数据,习惯了写sql,所以还是用sql来实现,下面这篇文章主要给大家总结介绍了关于MySQL批量更新的方式,需要的朋友可以参考下 这种场景直接通过update语句更新即可,如: 1 UPDATE t_sys_user SET ` desc ` = \\\'CaseWhen-0\\\' WHERE id IN (1001,1002,1003); 循环遍历逐条更新 这种方

    2024年02月07日
    浏览(44)
  • MySQL:插入数据insert ignore,重复数据自动忽略

    MySQL中插入数据,如果插入的数据在表中已经存在(主键或者唯一键已存在),使用insert ignore 语法可以忽略插入重复的数据。 1、insert ignore 语法 使用insert ignore语法插入数据时,如果发生主键或者唯一键冲突,则忽略这条插入的数据。 满足以下条件之一: 主键重复 唯一键重

    2024年02月12日
    浏览(37)
  • Mybatis 中传入List实现 批量插入、批量更新、批量删除

    个人收藏使用 文章来自Mybatis 中传入List实现 批量插入、批量更新、批量删除 - chelsey3tsf - 博客园 (cnblogs.com) 1. 批量插入 : Mapper层: 对应的mapper.xml: 如果List数据量比较大,可以考虑将List分批次插入 2. 批量更新: 批量更新只提供更新单个字段的,因为更新多个字段无论哪种

    2024年02月11日
    浏览(58)
  • 批量插入或更新数据(MyBatis-plus框架)

    目录 1.场景说明 2.DUPLICATE 和REPLACE比较 3.批量插入或者更新(两种方式) 方式一:mybatis-plus的saveOrUpdateBatch方法 问题:如果操作类集成了基础类,比如封装了BaseEntity去集成,那么这样使用会出问题 方式二:on duplicate key (推荐) 4.注意 5.常见问题  插入数据时,我们经常会遇到这

    2024年02月04日
    浏览(88)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包