问题?MySQL INSERT插入字段条件判断,如果不存在则插入
今天做项目遇到个问题,批量插入的时候,我们要进行多个字段数据的判断,怎么办呢?我想过几种方法:
注意:于普通的 INSERT 插入,如果想要保证不插入重复记录,我们只有对某个字段创建唯一约束实现
1.将需要存储的数据用List存储起来,将数据库表中的数据用List存储起来,到后台进行条件比对,符合条件的数据,直接insert数据。(注:这种方法加大后台的压力,比较繁琐,我试过,不太主张)
2.需要存储的数据依然用List存储起来,每次插入的时候,就比对一次,也就是要查询一次,最后符合就插入数据。
(注:这是最常用的一种方式)
3.最后一种是直接将List数据全部插入数据库。所有判断都在数据库中,符合条件则插入,不符合条件则不插入,这个运算压力都给了数据库.
注:insert语句是没有where条件的,有人说可以做触发器,存储过程啊! 当然可以了,但是我要说的是如果是在只用insert语句中进行判断呢?
有没有呢? 有,必须有啊!如下:
INSERT INTO table(field1, field2, fieldn) SELECT 'field1', 'field2', 'fieldn' FROM DUAL WHERE NOT EXISTS(SELECT field FROM table WHERE field = ?)
运用临时表的方法,进行插入就好了。
参考资料:点击打开链接
有需要进行辅导帮助解决问题的同学,可以加群喔:不是推销,就是IT问题讨论