SQL语句中insertorupdate语句使⽤排坑
最近业务上需要⽤到⼀个insert or update语句,如果数据库中已经存在这⼀类的数据,就将其统计次数+1,否则就插⼊
后台语句是这样写的
sql中update什么意思
数据库四个字段分别为:id、数据源id、⽇搜索次数、⽇搜索结果条数
⼀开始的思路是在java代码中组装好uuid以及需要更新或插⼊的数据源id,将list传到mapper中循环⼀次性处理;
但在⾃测的时候,发现每⼀个数据源的⽇搜索次数最多只能变成2,搜素再多次上限也是2;
于是到navicat做了⼀个测试,后来发现问题出在excluded这个地⽅
因为我在foreach循环中,传递的默认⽇搜索次数是1,所以在excluded这⾥,他并不是⽤我数据库中的搜索次数+1,⽽是⽤我在foreach 循环中传递的搜索次数+1,所以导致数据库中搜索很多次也⼀直都是2;
那么问题到了,就得解决办法,我尝试了在最后⼀条set语句中,使⽤+=,去掉excluded等等,都不⾏,后来知道,此处的excluded 是⽤于标记发⽣conflict的那⼀次,⽹上查询了许多办法也没有到合适的最优解。
此处我最终的解决办法是,在insert or update之前将其数据库中的当前次数查询到后端java代码中,并做完+1和判空置1处理后,当做参数传递进来
我觉得这肯定不是最优解,奈何⽔平太低,还望各位路过的⼤佬指教!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。