java mysql replace_java架构师学习路线-mysql怎么解决mysql insert重复

1、先建立2个测试表,在id列上创建unique约束。

2、mysql> create table test1(id int,name varchar(5),type int,primary key(id));Query OK, 0 rows affected (0.01 sec)并 几条数据,如下图所示:

1594380518225092.jpg

3、mysql> create table test2(id int,name varchar(5),type int,primary key(id));Query OK, 0 rows affected (0.01 sec)并 几条数据,如下图所示:

1594380522208202.jpg

4、发现重复的先删除再 ,如果记录有多个字段,在 的时候如果有的字段没有赋值,那么新 的记录这些字段为空,如下图所示:mysql> replace into test1(id,name)(select id,name from test2);Query OK, 5 rows affected (0.04 sec)Records: 4 Duplicates: 1 Warnings: 0

1594380529464446.jpg

5、需要注意的是,当你replace的时候,如果被 的表如果没有指定列,会用NULL表示,而不是这个表原来的内容。如果 的内容列和被 的表列一样,则不会出现NULL,如下图所示:mysql> replace into test1(id,name,type)(select id,name,type from test2);Query OK, 8 rows affected (0.04 sec)Records: 4 Duplicates: 4 Warnings: 0

1594380533547896.jpg

6、发现重复的是更新操作。在原有记录基础上,更新指定字段内容,其它字段内容保留。例如我只想 test2表的id,name字段,但是要保留test1表的type字段,如下图所示:mysql> insert into test1(id,name,type)(select id,name,type from test2) on DUPLICATE KEY UPDATE test1.name=test2.name;Query OK, 5 rows affected (0.04 sec)Records: 4 Duplicates: 1 Warnings: 0

1594380536212250.jpg

7、判断是否存在,存在不 ,否则 。很容易理解,当 的时候,违反唯一性约束,MySQL不会尝试去执行这条语句,如下图所示:mysql> insert ignore into test1(id,name,type)(select id,name,type from test2);Query OK, 3 rows affected (0.01 sec)Records: 4 Duplicates: 1 Warnings: 0

1594380542450166.jpg

尽管Java架构师学习路线已经分享给大家,但有多少人能认真的去践行,这个就难说了。互联网寒冬已经到来,作为程序员,更应在此时提高自己,有着更高远的追求。

篇幅有限,如果需要更详细的java架构师学习路线资料可加博主qq:1993712276,或者去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值