主要记录下mysql中避免重复插入的三种方案
方案一 : REPLACE INTO
根据表主键primary key或唯一索引unique进行插入数据,当主键和唯一索引有一个存在时,则会删除原来的旧数据,重新插入新数据(相当于更新).
有如下三种用法:
REPLACE INTO `table_name` ( `col_name`, ...) VALUES( 'value', ... );
REPLACE INTO `table_name` ( `col_name`, ...) SELECT `col_name`, ... from table_name where ...;
REPLACE INTO `table_name` SET col_name='value', ... ;
方案二:INSERT IGNORE INTO
根据表主键primary key或唯一索引unique进行插入数据,当主键和唯一索引有一个存在时忽略,执行后返回0,否则正常插入.
INSERT IGNORE INTO `table_name` ( `col_name`, ...) VALUES( 'col_name', ... );
方案三: ON DUPLICATE KEY
当表主键primary key或唯一索引unique出现重复时执行更新,否则插入.语法如下.
iNSERT INTO `table_name` ( `col_name`, ... ) VALUES( `col_name`, ... ) ON DUPLICATE KEY UPDATE `col_name` = 'value',...;