mysql -- 处理重复值(insert ignore 和 replace )

表或者结果集有重复值时,会包含重复记录,需要采用某种方法标识这些重复的记录并移除他们:

防止表中出现重复记录,可以使用主键或唯一索引来防止出现重复的记录

create table asset(
    asset_id int not null,
    asset_ip varchar(255) not null,
    asset_name varchar(255) not null
)ENGINE=InnoDB default charset = utf8

可以设置(asset_id)为主键,以确保不出现重复记录,语句如下:

create table asset(
    asset_id int not null,
    asset_ip varchar(255) not null,
    asset_name varchar(255) not null,
    primary key(asset_id)
)ENGINE=InnoDB default charset = utf8

也可以设置唯一索引,来强制记录是唯一的,语句如下:

create table asset(
    asset_id int not null,
    asset_ip varchar(255) not null,
    asset_name varchar(255) not null,
    unique(asset_id)
)ENGINE=InnoDB default charset = utf8

对于可能出现重复的记录,可以考虑使用insert ignore 语句,

 insert into asset(asset_id,asset_ip,asset_name) values(1,'192.168.3.208','中国上海'),(2,'192.168.3.163','中国北京'),(1,'192.168.9.153','中国天津');
//对于insert ignore ,如果插入的记录并没有和现在的记录发生冲突,则正常插入;如果有重复发生,那么insert ignore 会保留现在的记录,丢弃新插入的记录(本例中,会丢弃第三条记录)

还可以考虑采用 replace语句

replace into asset(asset_id,asset_ip,asset_name) values(1,'192.168.3.208','中国上海'),(2,'192.168.3.163','中国北京'),(1,'192.168.9.153','中国天津');

//对于replace ,如果记录是新的,那么等同于 insert ,如果是重复记录,那么新的记录会替换旧的记录

转载于:https://www.cnblogs.com/daijiabao/p/11295028.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值