查询多个更新

时间:2010-09-13 21:43:40

标签: sql mysql

如何在同一查询中进行多项更新。

假设我有这个查询

UPDATE table1
SET
Order = 1
WHERE
ID = 1234  

但是我想更改ID为2345和2837以及8399的更多订单 我将如何在相同的mysql查询中执行此操作。请注意,订单可能不同于1。因为订单字段是唯一的。

4 个答案:

答案 0 :(得分:3)

UPDATE table1 
SET 
Order = 1 
WHERE 
ID in (2345,2837,8399)

答案 1 :(得分:2)

UPDATE table1
SET Order = 1
WHERE id IN (1234, 2345, 2837, 8399)

如果每个id需要不同的Order值,那么您可能希望在与数据库通信的任何程序中放置一个循环。

已编辑添加

我在考虑在程序中循环,但我发现你想要以交互方式执行SQL。

如果您尝试捆绑一系列不可预测的数字,请执行以下操作:

UPDATE table1  Order = 1 WHERE id = 1234
UPDATE table1  Order = 2 WHERE id = 2345
UPDATE table1  Order = 3 WHERE id = 2837
UPDATE table1  Order = 5 WHERE id = 8399
UPDATE table1  Order = 8 WHERE id = 8675

...然后我不确定你希望如何缩短它。你可以编写一个被调用的存储过程:

do_table1_update "1,2,3,5,8,13", "1234,2345,2837,8399,8675,309"

这是你的想法吗?

答案 2 :(得分:1)

您可以更新多行,但不能将订单字段设置为不同的值,因此所有订单字段(具有匹配的ID)将具有值1

UPDATE table1 SET Order = 1 WHERE ID IN(1234, 2345, 2837, 8399)

答案 3 :(得分:0)

如果要更新具有相同ID 1的其他订单,请使用其他人发布的IN语句。如果不这样做,请使用PDO和参数化查询。