mysql数据库中避免重复数据插入

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012400305/article/details/80857804

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.csdn.net/t894690230/article/details/77996355

但是当你的数据库中数据存在重复 重复字段并没有设置唯一索引或者主键的时候上面的语法是无法使用的 后来发现使用 insert if not exists

insert if not exists

INSERT INTO TABLE (field1, field2, fieldn) SELECT 'field1','field2','fieldn'
FROM
表名
WHERE
NOT EXISTS (
SELECT
*
FROM
表名
WHERE
字段= ?
)

参考链接:
https://blog.csdn.net/fly910905/article/details/79634483

猜你喜欢

转载自blog.csdn.net/u012400305/article/details/80857804