数据准备

DROP TABLE IF EXISTS user1;
CREATE TABLE `user1` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`age` INT(3) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `u_name` (`name`));

insert into user1(`name`, `age`) values ('zhangshan', 18), ('lisi', 19);

1. INSERT IGNORE

MySQL尝试插入所有数据,但对于违反唯一索引的重复数据行,将忽略插入操作

insert ignore into user1(`name`, `age`) 
values ('zhangshan', 20), ('wangwu', 20);

mysql批量插入数据,跳过唯一索引报错-LMLPHP

2. REPLACE INTO

MySQL尝试插入数据,如果遇到唯一索引冲突,则会删除已存在的行,然后将新行插入,实现替换的效果

replace into user1(`name`, `age`) 
values ('zhangshan', 20), ('yanlp', 21);

mysql批量插入数据,跳过唯一索引报错-LMLPHP

3. INSERT … ON DUPLICATE KEY UPDATE

MySQL尝试插入数据,如果遇到唯一索引冲突,可以指定更新现有行的操作

insert into user1(`name`, `age`) 
values ('zhangshan', 25), ('wangwu', 26), ('test', 27)
ON DUPLICATE KEY UPDATE age = VALUES(age);

mysql批量插入数据,跳过唯一索引报错-LMLPHP

10-09 15:43