mysql if exists 数据表,Mysql实现数据的不重复写入(insert if not exists)以及新问题I...

本文介绍了在MySQL中如何实现数据的不重复写入,包括INSERT IGNORE、ON DUPLICATE KEY UPDATE和REPLACE语句的使用,并讨论了在使用这些策略时ID自增不连续的问题及其原因。
摘要由CSDN通过智能技术生成

Mysql实现数据的不重复写入(insert if not exists)以及新问题I

Mysql实现数据的不重复写入(insert if not exists)以及新问题:ID自增不连续的解答

最近做数据处理时候,遇到一个问题。用一个id自增主键时候,数据表中会插入大量重复数据(除ID不同)。这虽然对最终数据处理结果没有影响,但是有1个问题,如果数据量超大,对处理的速度影响成几何倍数增长!所以必须找到不重复插入的方法。

谷歌之:大量bolg有相关资料,但都是

INSERT INTO users_roles (userid, roleid) SELECT 'userid_x', 'roleid_x' FROM dual WHERE NOT EXISTS (SELECT * FROM users_roles WHERE userid = 'userid_x' AND roleid = 'roleid_x');这样的sql语句,尝试,不能解决问题。sql语法错误!

果断找官方文档,于mysql5.6版本查看到的insert文档如下图:

14a41074946a6caaaa591fc3fc2b22ec.png

online help insert文档地址为:http://dev.mysql.com/doc/refman/5.6/en/insert.html

5.6版本的官方文档中没有以上语法了,这有三种插入语句。分别分析。

e4153e650811e313d3d8ec16829f1c85.png

【With INSERT ... SELECT, you can quickly insert many rows into a table from one or many tables.不能从本表查询插入本表】

Or:

73d0b6b2ba9dc8c66325ca689774466b.png

You can

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值