【发布时间】:2018-01-23 22:53:04
【问题描述】:
我有一个这样的 MySQL 表:
purchases
id | item | price
-----------------
1 | 1 | 12.07
2 | 3 | 14.24
3 | 4 | 13.12
4 | 2 | 11.28
其中id 是主键,item 是唯一的(但不是唯一键)。假设我需要像这样调整大约一半的值:
purchases
id | item | price
-----------------
1 | 1 | 12.07
2 | 3 | 3.24 << changed
3 | 4 | 13.12
4 | 2 | 5.92 << changed
假设我有所有需要更新的商品/价格对。我可以这样写我的更新:
UPDATE purchases SET price = 3.24 WHERE item = 3;
UPDATE purchases SET price = 5.92 WHERE item = 2;
但是假设这个表有一百万行长,我需要更新半百万行。我不想运行半百万更新语句。考虑到所有商品/价格对,有没有办法在一个查询中执行此操作?
我查看了ON DUPLICATE KEY 语法,但我认为这不会起作用,因为item 不是我表中的主键,即使对于这个查询,我希望它起作用像一个。
【问题讨论】:
标签: mysql