如何在同一查询中进行多项更新。
假设我有这个查询
UPDATE table1
SET
Order = 1
WHERE
ID = 1234
但是我想更改ID为2345和2837以及8399的更多订单 我将如何在相同的mysql查询中执行此操作。请注意,订单可能不同于1。因为订单字段是唯一的。
答案 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和参数化查询。