mysql存在则更新,不存在则插入


INSERT INTO ON DUPLICATE KEY UPDATE 与 REPLACE INTO,两个命令可以处理重复键值问题,在实际上它之间有什么区别呢? 
前提条件是这个表必须有一个 唯一索引或主键,多个主键运行时效率很低。 unique 。

1、REPLACE发现重复的先删除再插入,如果记录有多个字段,在插入的时候如果有的字段没有赋值,那么新插入的记录这些字段为空。 

2、INSERT发现重复的是更新操作。在原有记录基础上,更新指定字段内容,其它字段内容保留。 

这样REPLACE的操作成本要大于 insert  ON DUPLICATE KEY UPDATE ,按道理应该选用insert  ON DUPLICATE KEY UPDATE 

例子:若表table的a字段为索引或主键,那执行下面语句:

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

如果a为1的这条记录不存在,那么就正常插入,若已存在,那么就更新操作将c字段加1.

---------------------------------------------------------------


下面是例子,存在title1则忽略

alter table TABLE1 add UNIQUE (title1); //把title1字段设置成唯一;

insert ignore into TABLE1 (title1,author1) values ('600686','abc'); //新增记录,存在则忽略;


 相关内容