MySQL插入时唯一值处理

#在mysql中避免重复插入记录的两种方法

使用ignore关键字

如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用:
INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('aaa', '99999', '9999');
当有重复记录就会忽略,执行后返回数字0

使用ON DUPLICATE KEY UPDATE关键字

插入数据时,如果记录具有唯一性,则执行UPDATE语句
INSERT INTO table1 SELECT * FROM table2 ON DUPLICATE KEY UPDATE `table1`.`course`=`table2`.`course`

将一个表的数据导入到另外一个表中,也可使用
INSERT INTO company_short (ent_id, entname, short, code, market_type) SELECT ent_id, entname, short, code, market_type FROM company_short_zh ON DUPLICATE KEY UPDATE company_short.ent_id=company_short_zh.ent_id, company_short.market_type=company_short_zh.market_type
注:此表中entname,short,code为unique索引,遇到重复时,新数据中ent_id, market_type覆盖掉旧数据的值