登录
转载

MySQL避免数据重复插入

发布于 2021-03-11 阅读 220
  • 数据库
  • MySQL
转载

1.ignore 若有主键重复的记录,则该条记录不会被插入到数据库中. 示例

insert into actor values(3,'ED','CHASE','2006-02-15 12:34:33');
这样当有重复记录就会忽略,执行后返回数字0;

解决

 insert IGNORE into actor values(3,'ED','CHASE','2006-02-15 12:34:33');

 还有个应用就是复制表,避免重复记录:
	INSERT IGNORE INTO `table_1` (`name`) SELECT `name` FROM `table_2`;

2.replace 语法:replace(object,search,replace) 语义:把object对象中出现的的search全部替换成replace。 实例:

 Update `table_name` SET `field_name` = replace (`field_name`,`from_str`,`to_str`);

如:把'病假' 替换为 '--':UPDATE users SET username=REPLACE(username,'病假','--')  WHERE username LIKE '%病假%';

说明: table_name —— 表的名字 field_name —— 字段名 from_str —— 需要替换的字符串 to_str —— 替换成的字符串

2.1.replace into函数 replace具备替换拥有唯一索引或者主键索引重复数据的能力,也就是如果使用replace into插入的数据的唯一索引或者主键索引与之前的数据有重复的情况,将会删除原先的数据,然后再进行添加。 语法:replace into table( col1, col2, col3 ) values ( val1, val2, val3 ) 语义:向table表中col1, col2, col3列replace数据val1,val2,val3 实例:

REPLACE INTO users (id,name,age) VALUES(123, ‘chao’, 50);

注意:使用replace into函数将删除原有的数据,而不是重复的不插入

参考:https://www.cnblogs.com/libin6505/p/10422910.html

3.通过表数据是否存在,不存在则执行插入操作 实例:

insert into actor(actor_id,first_name,last_name,last_update) --------actor_id为主键
select '3','ED','CHASE','2006-02-15 12:34:33'
from dual -------mysql内置的一张表,可以直接用
where not exists(select * from actor where actor_id = '3')

评论区

我是搬运工2号,没人自称1号

0

0

0

举报