热门标签: 转载 JavaScript mysql 学习 php
主页> 数据库 >

Mysql插入不重复的方法

发布时间:2018-12-25 编辑:三石兄 标签: Mysql 热度:1121

记录mysql写入数据时避免重复的几种方法……

MySQL插入新数据不重复的方法:

1.insert ignore into

当插入数据时,如出现错误,如重复数据(唯一索引或主键重复),将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉

INSERT IGNORE INTO demo (name) VALUES ('Demo');

2.on duplicate key update

当主键或唯一索引出现重复时,则执行update语句,不重复则执行insert语句。适用于遇到重复数据时只修改个别字段的场景(如果是写入操作返回1,更新操作返回2)

INSERT INTO demo (name) VALUES ('Demo') ON duplicate KEY UPDATE `num` = num+1 , `state` = 2;

3.insert … select … where not exist

根据select的条件判断是否插入,可以不光通过主键和索引来判断,也可以自定义其它条件,这种方式运用更灵活。(这里的exist作用是判断后面的查询是否有数据存在,如果有数据则表示这个where条件为true)例如:

INSERT INTO demo (name) SELECT 'Demo' FROM demo WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)

4.replace into

当主键或唯一索引出现重复时,则先删除重复数据,再写入新记录,没有重复数据则直接写入。适合用于覆盖重复数据

REPLACE INTO demo (name) VALUES('Demo');

四种方法的区别:
    ignore into: 会忽略重复写入的报错,相当于跳过不对重复数据做任何操作;
    duplicate:  在遇到重复数据时可以很方便的对单个或多个指定字段进行更新;
    where not exist: 这种方式稍微麻烦点,但是非常适合除了重复以外的自定义条件;
    replace into :  实现的过程是先删除重复数据再写入,因此会导致主键的变动,且等于覆盖所有数据;

Copyright © 2017-2020 三石兄博客 & 版权所有

蜀ICP备17023832号

323520