以下内容是引用
http://www.2cto.com/database/201108/99073.html
逐一分析
1.insert ignore into
当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。例如:
INSERT IGNORE INTO books (name) VALUES ('MySQL Manual')
这种方法很简便,但是有一种可能,就是加入不是因为重复数据报错,而是因为其他原因报错的,也同样被忽略了~
2.on duplicate key update
当primary或者unique重复时,则执行update语句,如update后为无用语句,如id=id,则同1功能相同,但错误不会被忽略掉。例如,为了实现name重复的数据插入不报错,可使用一下语句:
INSERT INTO books (name) VALUES ('MySQL Manual') ON duplicate KEY UPDATE id = id
这种方法有个前提条件,就是,需要插入的约束,需要是主键或者唯一约束。
3.insert … select … where not exist
根据select的条件判断是否插入,可以不光通过primary 和unique来判断,也可通过其它条件。例如:
INSERT INTO books (name) SELECT 'MySQL Manual' FROM dual WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)
这种方法貌似写这很繁琐~
4.replace into
如果存在primary or unique相同的记录,则先删除掉。再插入新记录。
REPLACE INTO books SELECT 1, 'MySQL Manual' FROM books
这种方法就是不管原来有没有相同的记录,都会先删除掉然后再插入
4种方法各有利弊,根据自己情况而定
分享到:
相关推荐
MySQL唯一索引重复插入数据解决方案总结.docx
防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了。 方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
mysql 批量插入测试数据 ,可判断条件插入数据,随心所遇插入,do where 循环
数据库,大批量插入测试数据,可用于生成随机数据
Django2+ MySQL8 数据插入和查询 Django2+ MySQL8 数据插入和查询
此Markdown文档提供了MySQL数据库中插入数据的DML操作示例代码和说明。通过文档,您可以学习如何使用`INSERT INTO`语句将数据插入到MySQL表中。示例代码演示了插入单行和多行数据的方法,并提供了相应的注释以帮助您...
做测试时,到mysql数据库循环插入千万条数据的java代码
MySql练习1:批量插入成绩数据.zip,MySql练习1:批量插入成绩数据.zipMySql练习1:批量插入成绩数据.zipMySql练习1:批量插入成绩数据.zipMySql练习1:批量插入成绩数据.zip
主要介绍了Python3 操作 MySQL 插入一条数据并返回主键 id的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
MySql 在存在主键冲突或唯一键冲突的情况下,根据插入方式,一般有以下三种插入方式避免错误。 insert ignore。 replace into insert on duplicate key update insert ignore insert ignore 会忽视数据库中已经...
一种快速大数据的mysql 数据库的插入方法,相比之前一条一条插入,根本不是一个级别的!
通常来说C++操作MySQL的时候,往Mysql中插入10000条简单数据,速度非常缓慢,居然要5分钟左右, 而打开事务的话,一秒不到就搞定了! 具体实现代码如下: #include #include #include #include "mysql.h" #...
如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下: INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES (‘test9@163.com’, ‘99999’, ...
提高mysql插入数据的速度.pdf
需求:需要频繁的插入数据到MySQL数据库中,设计目标要求能支持平均每秒插入1000条数据以上 方法:mysql批量数据插入方法及性能参考
sql 查出一张表中重复的所有记录数据 1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、...
只要学我一样编写这么一个工具类便可以实现批量插入多条数据,百条,千条,万条,后期还会继续优化增加数据时的速度!有点代码基础的保证能看懂,此项目已经有了前端界面你可以直接的导入然后运行测试既可以了,表...
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。 本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。 防止表中...