INSERT INTO IF EXISTS
MySQL的INSERT INTO IF EXISTS
语句可以保证不重复插入,一般用户批量导入一些格式化好的数据。
INSERT INTO category(catname,cattype,cid,caturl,keywords)
SELECT '中国人', 2, 2031, 'china','中国人民' FROM DUAL
WHERE NOT EXISTS
(SELECT catname FROM category WHERE catname = '中国人');
其中DUAL是临时表,不需要物理创建,这么用即可。
ON DUPLICATE KEY UPDATE
还有另外一种方法ON DUPLICATE KEY UPDATE
,一般用于一张表的数据导入到另一张表中。
INSERT INTO tb_count(uuid, click, liked, comment_count )
(SELECT uuid, click, liked, comment_count FROM tb_content)
ON DUPLICATE KEY UPDATE tb_count.uuid = tb_count.uuid;
INSERT IGNORE INTO
有重复的唯一索引
键就忽略。
INSERT IGNORE INTO table (name,email, phone) VALUES ('abc','abc@123.com', '123546');
REPLACE INTO
REPLACE和INSERT很相像,但是如果旧记录与新记录有相同的值,则在新记录被插入之前,旧记录被删除,容易导致主键值迅速增大溢出。
REPLACE INTO table (name,email, phone) VALUES ('abc','abc@123.com', '123546');
参考: