0
点赞
收藏
分享

微信扫一扫

MySQL避免重复插入记录的四种方法


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');

参考:



举报

相关推荐

0 条评论