你的位置:首页 > 数据库

[数据库]SQL:插入更新主键相同的行的所有其他列


在写SQL中,我们经常遇到这样一类问题。每一次插入的时候都要判断数据表中是不是已经存在这条数据,所谓相同数据,是除了主键以外全部列都相同,没有则插入,有则更新。在这种情境下,我们并不清楚知道这一列是否存在,所以单纯的插入和更新都有问题,于是有的人选择了删掉对应id,然后全部重新插入,这里遇到的问题就是,主键自增,删掉了会产生巨大空洞,并不是个好的设计。

 

在MySQL下,我采用的方法是:

insert into case_law (case_id,laws_id) (select 1,2 from dual where not EXISTS (select case_id,laws_id from case_law where case_id=1 and laws_id=2)

如上简单手段就可实现插入的时候检查是否存在。