`
zhouwenjian
  • 浏览: 14182 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MySQL中的insert ignore into, replace into等的一些用法总结

 
阅读更多

在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下。我们先建一个简单的表来作为测试:

CREATE TABLE `books` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(200) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `NewIndex1` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.insert ignore into

当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。例如:

INSERT IGNORE INTO books (name) VALUES ('MySQL Manual')

2.replace into

如果存在primary or unique相同的记录,则先删除掉。再插入新记录。

REPLACE INTO books SELECT 1, 'MySQL Manual' FROM books

3.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

4.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)
分享到:
评论

相关推荐

    正确使用MySQL INSERT INTO语句

    以下的文章主要介绍的是MySQL INSERT INTO语句的实际用法以及MySQL INSERT INTO语句中的相关语句的介绍,MySQL INSERT INTO语句在实际应用中是经常使用到的语句,所以对其相关的内容还是多多掌握为好。 INSERT [LOW...

    生成表记录的insert语句

    根据表中的记录生成insert语句的脚本

    MySql避免重复插入记录的几种方法

    方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录...还有个应用就是复制表,避免重复记录: 代码如下: INSERT IGNORE INTO `table_1` (`name`) SELECT `name` FROM `table_2`; 方案二:使用

    upsert, 在 MySQL,PostgreSQL和SQLite3上,更新 使用INSERT或者 IGNORE,透明地为MySQL和PostgreSQL创建函数( UDF ) ;.zip

    upsert, 在 MySQL,PostgreSQL和SQLite3上,更新 使用INSERT或者 IGNORE,透明地为MySQL和PostgreSQL创建函数( UDF ) ; 更新程序 让我们轻松更新传统 RDBMS,如 MySQL,PostgreSQL和SQLite3-hey外观 NoSQL 。 在...

    MySql三种避免重复插入数据的方法

    insert ignore 会忽视数据库中已经存在的数据,根据主键或者唯一索引判断,如果数据库没有数据,就会插入新的数据,如果有数据的话就跳过这条数据 小case 表结构 root:test> show create table t3G **************...

    MySql insert插入操作的3个小技巧分享

    1.插入的数据来源自其他表 表A有id, cola 字段 表B有id, cola, colb…等字段,其中id都为主键,cola为相同名字的列 现想将表B中colb>1000的记录都插入表A...insert ignore into A(id,cola) select id,cola from B where

    mysql insert的几点操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )

    INSERT语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,…)] VALUES ({expr | DEFAULT},…),(…),… [ ON DUPLICATE KEY UPDATE col_name=expr, … ] 或: INSERT [LOW_...

    mysql insert语句操作实例讲解

    insert的语法 代码如下: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]  [INTO] tbl_name [(col_name,…)]  VALUES ({expr | DEFAULT},…),(…),…  [ ON DUPLICATE KEY UPDATE col_name=expr, … ...

    防止mysql重复插入记录的方法

    防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了。 方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,...

    extjs动态生成树,绝对能运行产生

    INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(93,'Figaro','Christopher Michael',null); INSERT INTO Employee(EmployeeID, FirstName, LastName, SupervisorID) VALUES(113,'...

    详解MySQL导出指定表中的数据的实例

    详解MySQL导出指定表中的数据 要求: 1. 不导出创表的语句,因为表已经建好:默认会导出,先drop table然后create table; 2. 导出的insert语句加上ignore,允许重复执行:默认不会加上ignore; 3. insert语句中列...

    详解MySQL alter ignore 语法

    今天上班的时候,业务方问了我这样一个问题:我有一个表,需要添加一个唯一的字段,但是目前这个字段存在一些重复值,有没有好的解决办法。  这个问题刚听到的时候,说白了我是不会的,因为没有遇到过这样的需求,...

    replaceable-model:为雄辩的模型增加了“ REPLACE”和“ INSERT IGNORE”查询功能

    现在,在您的界面中,您有了一个使用ajax调用来更新此表中条目的表单,该表单可能包括根据选择的项来删除项。 因为表单提交了整个月的小部件,所以您不想遍历并进行单独的插入-您只想执行一个插入查询。 因此,您的...

    MySQL binlog_ignore_db 参数的具体使用

    经过前面文章学习,我们知道 binlog 会记录数据库所有执行的 DDL 和 DML 语句(除了数据查询语句select、show等)。注意默认情况下会记录所有库的操作,那么如果我们有另类需求,比如说只让某个库记录 binglog 或...

    sb-jpa-batch-insert-demo

    将您的saveAll()方法与准备插入的实体列表一起使用。 运行此应用程序,然后查看日志: 2018-06-16 00:23:14.698 INFO 9128 --- [ main] jdbc.sqlonly : batching 5 statements: 1: insert into application$model...

    mysql中的Load data的使用方法

    代码如下: load data local infile ‘D:/data.txt’ into table pet lines terminated by ‘\r\n’ ignore 1 lines; 应用mysql版本: 您可能感兴趣的文章:Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入...

    mysql数据库和oracle数据库之间互相导入备份

    1. 使用默认的结束符号导入到MySql数据库中: LOAD DATA LOCAL INFILE ‘d:/oracle.txt’ IGNORE INTO TABLE alarmLog 此时Fields的结束符默认的就是’/t’制表符,而不是”/t”字符串. 2. 当设定Fields结束符导入...

    obsolete please ignore it

    obsolete please ignore it

    mysql 复制过滤重复如何解决

    1、replicate_do_db 和 replicate_ignore_db 不要同时出现。容易出现混淆。也是毫无意义的。 Replicate_Do_DB: db1 Replicate_Ignore_DB: ... 不使用use 语句 insert into db1.tb1 values (11); insert into db2.tb2 v

Global site tag (gtag.js) - Google Analytics