Mysql 实现批量插入对已存在数据忽略或更新
短信预约 -IT技能 免费直播动态提醒
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);
新增索引后,我们开始批量插入数据
这里我们先制造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);
运行过程
运行结果展示
来源地址:https://blog.csdn.net/zhangHP_123/article/details/131666669
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341