mysql mybatis 条件批量插入(条件满足即插入,否则不插入)

这篇博客介绍了如何在MySQL中使用from dual和not exists子句来确保在插入多条记录时,某个字段的值保持唯一。示例展示了如何在不添加唯一性索引的情况下,通过SQL查询实现user表的no字段不重复插入三条记录,并提供了mybatis批量写入时保持no字段不重复的实现语句。
摘要由CSDN通过智能技术生成

在mysql中插入一或者多条记录的时候,要求某个字段的值唯一,但是该字段没有添加唯一性索引,可用from dual解决。

 

1

2

3

4

5

select from (

select '2015080109' a,2 b,4 c,5 d from dual

union

select '2015080106' a,2 b,4 c,5 d from dual

) a where not exists (select lottery_no from user where a.a = b.lottery_no)

  

 

1

2

3

4

5

6

7

8

INSERT INTO user  (id, no,add_time,remark)

select from (

SELECT 1 id, 1 no, NOW() add_time,'1,2,3,1,2' remark FROM DUAL

UNION ALL

SELECT no, 2 no, NOW() add_time,'1,2,3,1,2' remark FROM DUAL

UNION ALL

SELECT no, 3 no, NOW() add_time,'1,2,3,1,2' remark FROM DUAL

) a where not exists (select no from user where a.no = b.no)

  

 

上述是实现user表的no字段不重复,插入三条记录。

 

下面是mybatis批量写入no字段不重复的实现语句。

 

1

2

3

4

5

6

INSERT INTO user (id, no,add_time,result)

select from (

<foreach collection="list" item="obj" separator=" UNION ALL " >

SELECT #{obj.id} id, #{obj.nono, #{obj.addTime} add_time,#{obj.result} result FROM DUAL

</foreach>

) a where not exists (select no from user where a.no = b.no)

  

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sunday_ding

一分钱也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值