MySQL中的insert ignore into讲解

本文介绍了MySQL的INSERT IGNORE INTO语句,该语句在遇到主键冲突时会忽略重复记录并给出警告,而非引发错误。通过示例,展示了在主键冲突和无主键冲突时的区别,强调了其在数据插入时对重复数据处理的实用性。
摘要由CSDN通过智能技术生成

最近工作中,使用到了insert ignore into语法,感觉这个语法还是挺有用的,就记录下来做个总结。

insert ignore into : 忽略重复的记录,直接插入数据。

包括两种场景:

1、插入的数据是主键冲突时

insert ignore into会给出warnings,show warnings就可以看到提示主键冲突;并且本次插入无效。

[test]> create table tt(c1 int primary key, c2 varchar(50))engine = xx;
Query OK, 0 rows affected (0.21 sec)

[test]> insert into tt values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

[test]> select * from tt;
+----+------+
| c1 | c2   |
+----+------+
|  1 | aaa  |
|  2 | bbb  |
|  3 | ccc  |
+----+------+
3 rows in set (0.01 sec)

[test]> 
[test]> insert ignore into tt values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 0 rows affected, 3 warnings (0.01 sec)
Records: 3  Duplicates: 3  Warnings: 3

[test]> 
[test]> select * from tt;
+----+------+
| c1 | c2   |
+----+------+
|  1 | aaa  |
|  2 | bbb  |
|  3 | ccc  |
+----+------+
3 rows in set (0.00 sec)

使用insert ignore into语句时,如果主键冲突,只是提示"warnings"。

如果使用insert into语句时,如果主键冲突直接报错。

2、没有主键冲突时,直接插入数据

insert into 与 insert ignore into 都是直接插入数据

[test]> create table t2(c1 int, c2 varchar(50))engine = xxx;
Query OK, 0 rows affected (0.05 sec)

[test]> insert into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0

GreatDB Cluster[test]> select * from t2;
+------+------+
| c1   | c2   |
+------+------+
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
+------+------+
3 rows in set (0.00 sec)

[test]> insert into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0


[test]> insert into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

[test]> select * from t2;
+------+------+
| c1   | c2   |
+------+------+
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
|    1 | aaa  |
|    2 | bbb  |
|    3 | ccc  |
+------+------+
9 rows in set (0.00 sec)

[test]> insert ignore into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc");
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0

因此,insert ignore into主要是忽略重复的记录,直接插入数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值