Mysql批量插入时,有时候碰到的字段已经在库中存在时,业务需求是更新而不是新插入,经过多方查找,可以通过此方法尝试:
INSERT INTO
inf_inform
(memberId,url,createTime,updateTime,endTime,beginTime)
VALUES
(memberId,url,now(),now(),now(),now())
ON DUPLICATE KEY UPDATE
url=VALUES(url),beginTime=VALUES(beginTime),endTime=VALUES(endTime);
inf_inform 表的字段有: informId, memberId, url, createTime, updateTime, endTime, beginTime
其中 informId 为主键,自动生成,memberId 设着为唯一索引。
在插入时,如果 informId 和 memberId 已经存在则对存在的 row 执行更新语句。
ON DUPLICATE KEY UPDATE
url=VALUES(url),beginTime=VALUES(beginTime),endTime=VALUES(endTime);
//其中这一语句的意思是:
//如果 informId 和 memberId 已经存在,
//那么更新时 会争对存在 row 的 url, beginTIme, endTime 进行更新
//更新内容为VALUES()包含的内容,及插入时输入的数据