MySQL插入数据insert ignore语法重复数据自动忽略

 更新时间:2023年08月19日 09:50:14   作者:无敌的黑星星  
这篇文章主要给大家介绍了关于MySQL插入数据insert ignore语法重复数据自动忽略的相关资料,最近工作中使用到了insert ignore into语法,感觉这个语法还是挺有用的,就记录下来做个总结,需要的朋友可以参考下

前言

MySQL中插入数据,如果插入的数据在表中已经存在(主键或者唯一键已存在),使用insert ignore 语法可以忽略插入重复的数据。

1、insert ignore 语法

insert ignore into table_name values…

使用insert ignore语法插入数据时,如果发生主键或者唯一键冲突,则忽略这条插入的数据。

满足以下条件之一:

  • 主键重复
  • 唯一键重复

2、insert ignore 案例

先看一张表,表名table_name,主键id,唯一键name,具体表结构及表中数据如下:

 CREATE TABLE table_name(
  id int(11) NOT NULL,
  name varchar(50) DEFAULT NULL,
  age int(11) DEFAULT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY uk_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> select * from table_name;
+----+------+------+
| id | name | age  |
+----+------+------+
|  1 | Tom  |   20 |
+----+------+------+

2.1 主键冲突

插入一条记录,id为1,如果不加 ignore ,报主键冲突的错误,如下:

mysql> insert into table_name values(1,'Bill', 21);
ERROR 1062 (23000): Duplicate entry ‘1' for key ‘PRIMARY'

加上ignore之后,不会报错,但有一个warning警告,如下:

mysql> insert ignore into table_name values(1,'Bill', 21);
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show warnings;
+———+——+—————————————+
| Level   | Code | Message                               |
+———+——+—————————————+
| Warning | 1062 | Duplicate entry ‘1' for key ‘PRIMARY' |
+———+——+—————————————+

查询表,发现插入的数据被忽略了。

mysql> select * from table_name;
+—-+——+——+
| id | name | age  |
+—-+——+——+
|  1 | Tom  |   20 |
+—-+——+——+

2.2 唯一键冲突

同样,插入唯一键冲突的数据也会忽略,如下所示:

mysql> insert into table_name values(2,'Tom',21);
ERROR 1062 (23000): Duplicate entry ‘Tom' for key ‘uk_name'
mysql> insert ignore into table_name values(2,'Tom',21);
Query OK, 0 rows affected, 1 warning (0.00 sec)

如果业务逻辑需要插入重复数据时自动忽略,不妨试试MySQL 的 insert ignore 功能。

总结

到此这篇关于MySQL插入数据insert ignore语法重复数据自动忽略的文章就介绍到这了,更多相关MySQL重复数据自动忽略内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL建表和增添改查操作代码

    MySQL建表和增添改查操作代码

    这篇文章主要介绍了MySQL建表和增添改查操作代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • Mysql5.7修改root密码教程

    Mysql5.7修改root密码教程

    本文给大家分享的是个人在使用mysql5.7修改root密码的时候遇到的问题,以及解决方法,推荐给有相同需求的小伙伴参考下。
    2016-02-02
  • 浅谈MySql的存储引擎(表类型)

    浅谈MySql的存储引擎(表类型)

    通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合
    2011-05-05
  • 在Centos 5.5 上编译安装mysql 5.5.9

    在Centos 5.5 上编译安装mysql 5.5.9

    由于开发需要,现在需要安装安装MySQL 5.5.9,使用了rpm安装总是出错,而且还有好多依事关系麻烦,此外也没有找到二进制的包,只好找源码包进行编译;
    2014-07-07
  • mysql导入sql文件命令和mysql远程登陆使用详解

    mysql导入sql文件命令和mysql远程登陆使用详解

    这篇文章主要介绍了mysql导入sql文件命令和mysql远程登陆使用详解,需要的朋友可以参考下
    2014-04-04
  • mysql 误删除ibdata1之后的恢复方法

    mysql 误删除ibdata1之后的恢复方法

    如果误删除了在线服务器中mysql innodb相关的数据文件ibdata1以及日志文件 ib_logfile*,应该怎样恢复呢
    2013-12-12
  • mysql索引失效的五种情况分析

    mysql索引失效的五种情况分析

    这篇文章主要介绍了mysql索引失效的5种情况分析,需要的朋友可以参考下
    2015-01-01
  • Spring中的InitializingBean和SmartInitializingSingleton的区别详解

    Spring中的InitializingBean和SmartInitializingSingleton的区别详解

    这篇文章主要介绍了Spring中的InitializingBean和SmartInitializingSingleton的区别详解,InitializingBean只有一个接口方法afterPropertiesSet(),在BeanFactory初始化完这个bean,并且把bean的参数都注入成功后调用一次afterPropertiesSet()方法,需要的朋友可以参考下
    2024-01-01
  • MySQL中NULLIF 、IFNULL、IF的用法和区别举例详解

    MySQL中NULLIF 、IFNULL、IF的用法和区别举例详解

    这篇文章主要给大家介绍了关于MySQL中NULLIF 、IFNULL、IF的用法和区别的相关资料,nullif和ifnull都是MySQL中用于处理NULL值的函数,但它们的用法和作用略有不同,下面给大家详细介绍下,需要的朋友可以参考下
    2024-05-05
  • MySQL中查询当前时间间隔前1天的数据

    MySQL中查询当前时间间隔前1天的数据

    实际项目中我们都会遇到分布式定时任务执行的情况,今天通过本文给大家分享MySQL中查询当前时间间隔前1天的数据,查询sql语句给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧<BR>
    2021-12-12

最新评论