mysql数据库中避免重复数据插入
首先 数据库中已经存在重复数据 并且数据量很大 之前并没有设置重复字段为唯一索引
需求:
修改sql语句在插入时 避免重复插入
网上看了几个博客都是设置唯一索引 使用ignore或者REPLACE INTO 或者ON DUPLICATE KEY UPDATE
on duplicate key update
如果数据存在会触发更新操作 执行后面语句的update
INSERT INTO tb_addrbook(num,name,mobile) VALUE('1001','小李','13112345678') ON DUPLICATE KEY UPDATE name= '小李',mobile='13112345678'
ON DUPLICATE KEY UPDATE 之后的语句不是条件判断 条件的判断会根据你的唯一索引来判断 触发update之后会执行 UPDATE之后的语句进行更新 如果update之后写的是条件判断的话 就会出现只能插入无法更新的操作
replace into
如果数据存在就删除再插入
REPLACE INTO `student`(`name`, `age`) VALUES('Jack', 18);
insert ignore into
如果插入时 数据存在则忽略此次插入数据
INSERT IGNORE INTO `student`(`name`, `age`) VALUES('Jack', 18);
下面是参考链接:
https://www.cnblogs.com/Eric-zhao/p/6655994.html
https://blog.youkuaiyun.com/t894690230/article/details/77996355
但是当你的数据库中数据存在重复 重复字段并没有设置唯一索引或者主键的时候上面的语法是无法使用的 后来发现使用 insert if not exists
insert if not exists
FROM
表_tmp
WHERE
NOT EXISTS (
SELECT
*
FROM
表1
WHERE
字段= ?
)```
参考链接:
https://blog.youkuaiyun.com/fly910905/article/details/79634483