Mysql如何实现批量数据存在则更新,否则插入?

164次阅读

有一批数据入库,如果数据存在就直接更新,否则插入。网上找了都是用的ON DUPLICATE KEY UPDATE或者replace into这种,这样的只能在unique字段下才可以,但是我这里不一样,需要类似于where条件的,比如满足在某时间段则更新,否则插入。有没有一个高效一点的方法?用程序循环跑明显不太现实。。。

qf19910623

where 的没有现成语法,即使是 Postgresql 这种级别的也没有,更别说 MySQL 了。
要直接解决这个问题,只能自己写代码,不管你是在应用中写,还是在数据库中定义一个存储过程。
MySQL 单表数据撑爆百万级,已存在的数据全取出来在应用中自己创建索引,用来判断是更新还是插入,没什么不现实的。

yszou

你可以加一个索引啊。。。用完再删掉

猪肉楠

首先你这个问题有点自相矛盾了,你想实现存在就更新,不存在就插入,那你这个判断的依据呢,可不可以理解成where条件里面就是唯一的,那如果是唯一的,直接加唯一索引就好了

leiyang

什么叫程序循环跑不太现实?你这里的批量数据这个集合里面肯定是分为插入和更新两种的,至于是那种操作还要和原来的数据比较,不管怎么着每条数据都要比较一次吧

缘钰0322

正文完