使用不同的条件更新多个MySQL行

时间:2018-01-23 22:53:05

标签: mysql

我有一个像这样的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;

但是说这个表是一百万行,我需要更新50万行。我不想运行50万个更新语句。在给定所有商品/价格对的一个查询中,有没有办法做到这一点?

我已查看了ON DUPLICATE KEY语法,但鉴于item不是我表中的主键,我认为这不会起作用,即使对于这个查询,我希望它像一个人一样。

1 个答案:

答案 0 :(得分:1)

您可以将密钥和新值插入临时表,并在更新查询中加入。喜欢这个

update your_table 
join temp_table on your_table.item = temp_table.item
set your_table.price = temp_table.new_price