使用mysql做insert插入时,会判断是否有此记录 not exists,如果没有就插入 ,有就不做操作
一、之前的做法:
INSERT INTO account (id, name, gender)
SELECT #{id}, #{name} , #{gender}
FROM account
WHERE not exists (select * from account
where name=#{name});
这种做法一直没有发现问题,可是今天account的数据被清空了 ,再执行这条语句的时候,插入不进去。
发现:
1、执行如下代码:
SELECT 2,'xiaoming',0 from account WHERE not EXISTS (
SELECT 1 FROM account WHERE id = 3688
)
执行结果如下:
没数据,所以肯定不会插入成功;
2、给account表插入三条数据之后,再次执行上面sql:

二、解决办法
INSERT INTO account
(id, name, gender)
SELECT #{id}, #{name} , #{gender}
FROM dual
WHERE not exists (select * from account
where name=#{name};
本文探讨了在MySQL中使用not exists进行条件插入时遇到的问题,并提供了一种改进方案,以确保当目标记录不存在时能够正确插入。
4993

被折叠的 条评论
为什么被折叠?



