MySQL:批量更新唯一记录

时间:2014-10-06 20:16:03

标签: mysql

假设我有一个.yml文件,其中包含一些数据:

- id: 1
  cool_data: 124
- id: 2
  cool_data: 178
- id: 3
  cool_data: 101
...

考虑到所有id值代表数据库中的现有记录,如何批量导入信息(可能在几个语句中),而是为每个数据点发出UPDATE个查询? / p>

1 个答案:

答案 0 :(得分:1)

您应该能够将INSERT ... ON DUPLICATE KEY UPDATE语法与VALUES()函数结合使用:

INSERT INTO table_name (id, cool_data)
VALUES
  (1, 124),
  (2, 178),
  (3, 101),
  ...
ON DUPLICATE KEY
UPDATE cool_data = VALUES(cool_data)

当然,如果主键值不存在,这实际上会INSERT。