当做批量插入,遇到主键冲突同时需要根据部分条件更新数据时,可使用IF语句
例如user表有以下字段:
id_card, name, age, status
id_card为主键
我们要做批量插入,主键冲突当status字段为1的时候,则更新name和age字段的值,否则保持原数据,sql如下
INSERT INTO user(id_card, name, age) values(:id_card, :name, :age) ON DUPLICATE KEY UPDATE name=IF(status=1, VALUES(name), name), age=IF(status=1, VALUES(age), age)