MySQL Replac Into 和 Insert into

 

MySQL 在数据冲突时实际上是删掉了旧记录,再写入新记录,这是使用 REPLACE INTO 时最大的一个误区,

而满足这一需求的 MySQL 方言是 INSERT INTO auto (k, v) VALUES (1, ‘1-1’) ON DUPLICATE KEY UPDATE v=VALUES(v);

鉴于此,很多使用 REPLACE INTO 的场景,实际上需要的是 INSERT INTO … ON DUPLICATE KEY UPDATE,在正确理解 REPLACE INTO 行为和副作用的前提下,谨慎使用 REPLACE INTO。

 

原来导数据的语句:

INSERT INTO `z_art_bak`(`pk`, `title`, `date`, `category`, `author_name`, `url`, `thumbnail_pic`, `sid`) SELECT `pk`, `title`, `date`, `category`, `author_name`, `url`, `thumbnail_pic`, `sid` FROM `z_art` WHERE date(`date`) BETWEEN '2015-11-01' AND '2015-11-30' GROUP BY `title`

 

直接入库的语句:

INSERT INTO `z_art_bak`(`pk`, `title`, `date`, `category`, `author_name`, `url`, `thumbnail_pic`, `sid`) VALUES (...) ON DUPLICATE KEY `title`= VALUES(`title`)

 

参考网址:http://www.cnblogs.com/monian/archive/2014/10/09/4013784.html

 

http://blog.csdn.net/rainkin1993/article/details/8592617

 

https://segmentfault.com/a/1190000002527333

你可能感兴趣的:(MySQL Replac Into 和 Insert into)