应用场景:近来在做数据更新时,发现有很多数据其实数据库是存在的,只需要更新部分字段即可,但是有些数据又需要新加入。但是在做更新数据时需要做唯一索引
例:
INSERT INTO flnet_statistics.ota_push_count (
`push_date`,
`task_group_id`,
`model_code_name`,
`old_version`,
`push_count`,
`update_time`
) VALUE < foreach item = "group" collection = "list" SEPARATOR = "," > (
#{group.time},
$ { group.groupId },
#{group.modelCode},
#{group.version},
$ { group.count },
NOW()
) < / foreach >
ON DUPLICATE KEY
UPDATE
`push_count` =
VALUES
(`push_count`)
实例中,on duplicate key update 对“push_count”做更新操作(有旧数据则更新,无则插入),同时它的主键不会更改。与replace功能类似,但是replace会将原有数据删除,然后再新增一条新的数据,同时主键会更改。
例:
REPLACE flnet_statistics.ota_push_count (
`push_date`,
`task_group_id`,
`model_code_name`,
`old_version`,
`push_count`,
`update_time`
) VALUE (
'2018-01-23',
296,
'LCD-60SU465A_02',
'V1.0.2',
200,
NOW()
)