MySQL 判断记录是否存在,不存在则插入存在则更新

 

最近在做一个电影相关的项目需要从定时从第三方合作商那拿相关的影片,影院,影厅等一些数据,然后经过数据清洗变为自己的数据。在这里就涉及到重复数据的问题。是删除从新入库还是说存在更新不存在就插入?很显然我们需要第二种方式!

ON DUPLICATE KEY UPDATE

INSERT 语句的一部分,如果指定 ON DUPLICATE KEY UPDATE ,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE,如果不会导致唯一值列重复的问题,则插入新行。如:

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

UPDATE table SET c=c+1 WHERE a=1;

这两条Sql语句的结果是相同的。

为甚说需要这种方式呢!这种方式不需要维护索引效率上比先删除在插入要快的多。MySql 官方解释:https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

posted @ 2017-04-24 10:35  漂过太平洋  阅读(1337)  评论(0)    收藏  举报