MySQL的Replace into 与Insert into on duplicate key update真正的不同之处

看下面的例子吧: 1 Replace into ... 1.1 录入原始数据 mysql use test; Database changed mysql mysql CREATE TABLE t1 SELECT 1 AS a, 'c3' AS b, 'c2' AS c; ALTER TABLE t1 CHANGE a a INT PRIMARY KEY AUTO_INCREMENT ; Query OK, 1 row

                        看下面的例子吧: 1 Replace into ...1.1 录入原始数据mysql&gt; use test;Database changedmysql&gt; <img alt src="http://img.558idc.com/uploadfile/allimg/210707/1I51H1Y-0.jpg"><p>mysql&gt; CREATE TABLE t1 SELECT 1 AS a, 'c3' AS b, 'c2' AS c;ALTER TABLE t1 CHANGE a a INT PRIMARY KEY AUTO_INCREMENT ;Query OK, 1 row affected (0.03 sec)Records: 1  Duplicates: 0  Warnings: 0</p>

 

mysql> INSERT INTO t1 SELECT 2,'2', '3';Query OK, 1 row affected (0.01 sec)Records: 1  Duplicates: 0  Warnings: 0mysql> insert into t1(b,c) select 'r2','r3';Query OK, 1 row affected (0.08 sec)Records: 1  Duplicates: 0  Warnings: 0

 

1.2 开始replace操作mysql> REPLACE INTO t1(a,b) VALUES(2,'a') ;Query OK, 2 rows affected (0.06 sec)

【】看到这里,replace,看到这里,a=2的记录中c字段是空串了,所以当与key冲突时,replace覆盖相关字段,其它字段填充默认值,可以理解为删除重复key的记录,新插入一条记录,一个delete原有记录再insert的操作。

1.3 但是不知道对主键的auto_increment有无影响,接下来测试一下: