mysql插入重复数据更新_MySQL 避免数据重复插入、更新sql脚本的方法分享

摘要:

下文讲述MySQL数据库中,避免数据重复插入的关键字(ignore,Replace,ON DUPLICATE KEY UPDATE)分享,如下所示:

ignore关键字

ignore关键字用于插入数据时,如果存在主键重复或唯一索引约束,则会自动忽略此脚本的运行,并返回影响的行数

INSERT IGNORE INTO `table_name` (`field1`, `field2`, `field3`) VALUES ('a', 'b', 'c');

---当出现主键或唯一索引的重复时,就自动忽略此脚本,并返回影响行数字0

INSERT IGNORE INTO `table_name` (`field`) SELECT `field` FROM `table_name2`;

---采用表复制,如果存在主键重复或唯一索引重复时,则自动忽略插入记录

使用replace关键字插入数据

Replace into 语法

REPLACE INTO `table_name`(`field_name`, ...) VALUES (...);

REPLACE INTO `table_name` (`field_name`, ...) SELECT ...;

REPLACE INTO `table_name` SET `field_name`='value',

replace into功能:

替代插入,此关键字的功能同insert ignore into关键字非常的想象,

当如果(主键或唯一索引值重复时),先删除原行数据,再将新数据插入到数据表中

replace into返回值:

replace into返回此次操作所影响的行数,此值为

删除行和被插入行数之和

例:keyId为主键 table_name数据表为空表

REPLACE INTO `table_name` (`keyId`, `info`) VALUES (1, 'maomao365.com');

---影响行数为1

---当第二次运行以上脚本时,则影响的行数为2

REPLACE INTO `table_name` (`keyId`, `info`) VALUES (1, 'maomao365.com');

ON DUPLICATE KEY UPDATE关键字说明

ON DUPLICATE KEY UPDATE关键字 常结合insert into 关键字一起使用,所起到的功能为:(“有则更新,无则插入”)

当主键或唯一索引值重复时,执行update操作

---例:keyId 为主键

INSERT INTO `table_name` (`keyId`, `info`) VALUES (1,88) ON DUPLICATE KEY UPDATE `info`=`info`+1;

---当 table_name表中存在keyId=1的记录时,以上脚本等效于以下

UPDATE `table_name` SET `info`=`info`+1 WHERE `keyId`=1;

---当 table_name表中不存在keyId=1的记录时,以上脚本等效于以下

INSERT INTO `table_name` (`keyId`, `info`) VALUES (1,88)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值