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

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

文章目录

  • Mysql 实现批量插入对已存在数据忽略/更新
  • 一. 表的准备
  • 二. 实现
    • 2.1 实现原理
    • 2.2 批量插入对已存在数据忽略

一. 表的准备

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);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1VkErW2f-1689071358754)(Mysql 实现批量插入对已存在数据忽略更新.assets/image-20230711181257677.png)]

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

这里我们先制造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);

运行过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hWS5eY6x-1689071358755)(Mysql 实现批量插入对已存在数据忽略更新.assets/image-20230711182243200.png)]

运行结果展示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qDDThnJf-1689071358755)(Mysql 实现批量插入对已存在数据忽略更新.assets/image-20230711182516342.png)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19373.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell脚本--------shell变量、条件表达式、流程控制

第三阶段基础 时 间:2023年7月7日 参加人:全班人员 内 容: shell变量、条件表达式、流程控制 目录 一、shell变量 二、shell条件表达式与运算符 三、break和continue语句 演示:break语句 continue语句 四、实例拓展 …

9.2.4 vim 的暂存盘、救援回复与打开时的警告讯息

当我们在使用 vim 编辑时, vim 会在与被编辑的文件的目录下,再创建一个名为.filename.swp 的文件。 比如说我们在上一个小节谈到的编辑 /tmp/vitest/man_db.conf 这个文件时, vim 会主动的创建 /tmp/vitest/.man_db.conf.swp 的暂存盘&#x…

常用数据分类算法原理介绍、优缺点分析与代码实现[LR/RF/DT/SVM/NavieBayes/GBDT/XGBoost/DNN/LightGBM等]

本文的主要目的是总结记录日常学习工作中常用到的一些数据分类算法,对其原理简单总结记录,同时分析对应的优缺点,以后需要的时候可以直接翻看,避免每次都要查询浪费时间,欢迎补充。 机器学习领域中常用的分类模型包括以…

智能物流监控系统的数据平台技术研究

完整资料进入【数字空间】查看——baidu搜索"writebug" 1.1 项目背景 物联网技术是利用传感器嵌入各种末端设备,通过无线或有线网络接入互联网以实现人与物、物与物实时互联的新兴技术[1]。 智能物流监控系统是在物流量越来越大、物流价值越来越贵重的背…

关于SpringBoot、Nginx 请求参数包含 [] 特殊符号 返回400状态

问题来源: 使用RESTful风格发送带有特殊符号(如:点、大括号等)的请求,当使用Nginx做地址映射时会返回报"HTTP Status 400-Bad Request"的错误,这个时候我们需要对Nginx的映射方式做一下调整。 Nginx调整完发现跳转后又报…

基于RWKV-Runner大语言模型系统

RWKV Runner 旨在消除大语言模型的使用门槛,全自动处理AI对话,并且提供了OpenAI API兼容的接口。使用起来简单方便,但是还是比较吃机器,显存2G到32G都可以使用,根据自己的模型选择即可。 总结起来: 使用起来方便简单,上手容易。需要有电脑基础,很多地方还不是傻瓜化。需…

Android JetPack深入分析DataBinding源码

前言 数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。 DataBinding支持双向绑定,数据变化的时候界面跟着变化,界面变化也同步给数据&…

【C语言】1-Visual C++ 2010 的简单使用和第一个 C 语言程序

1. Visual C++ 2010 的简单使用 1.1 面板介绍 1.2 新建C语言项目 打开 Visual C++ 2010,点击 New Project 根据下面的图示进行操作,其中需要注意 ③:这里输入的为项目名(建议和我的命名保持一致) ④:这里是项目存放的位置,可以自己选择,最好不要有中文路径(只要是使…

selenium 浏览器托管

selenium 浏览器托管,是启动一个浏览器,调试代码,可以运行当前调试代码,不用从启动浏览器开始从头执行 在谷歌浏览器chrome.exe 目录中打开cmd 输入下面目录,启动器浏览器 chrome.exe --remote-debugging-port9222 -…

使用docker部署rancher并导入k8s集群

前言:鉴于我已经部署了k8s集群,那就在部署rancher一台用于管理k8s,这是一台单独的虚拟环境,之前在k8s的master节点上进行部署并未成功,有可能端口冲突了,这个问题我并没有深究,如果非要通过修改…

数据结构05:树与二叉树[C++][并查集]

图源:文心一言 Chat GPT生成,代码的核心思想与王道咸鱼老师的视频虽然类似,但是在具体实现上毕竟还是略有差别~~因此,如果对考研方向的并查集代码感兴趣,可以查看—— 王道咸鱼老师的视频:{5.5_2_并查集_…

【Elasticsearch】文档操作

目录 3.文档操作 3.1.新增文档 3.2.查询文档 3.3.删除文档 3.4.修改文档 3.4.1.全量修改 3.4.2.增量修改 3.5.总结 3.文档操作 3.1.新增文档 语法: POST /索引库名/_doc/文档id {"字段1": "值1","字段2": "值2"…