Sql 查询多个更新

Sql 查询多个更新,sql,mysql,Sql,Mysql,如何在同一查询中执行多个更新 假设我有这个问题 UPDATE table1 SET Order = 1 WHERE ID = 1234 但是我想更改更多的订单,其中ID为2345、2837和8399 在同一个mysql查询中,我将如何做到这一点。请注意,这些订单可能不同于1。因为订单字段是唯一的 UPDATE table1 SET Order = 1 WHERE id IN (1234, 2345, 2837, 8399) 如果每个id需要不同的Order值,那么可能需要在与数据库通信的

如何在同一查询中执行多个更新

假设我有这个问题

UPDATE table1
SET
Order = 1
WHERE
ID = 1234  
但是我想更改更多的订单,其中ID为2345、2837和8399
在同一个mysql查询中,我将如何做到这一点。请注意,这些订单可能不同于1。因为订单字段是唯一的

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"
…那么我不知道你想怎么缩短。您可以编写这样调用的存储过程:

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"
这就是你的想法吗

UPDATE table1 
SET 
Order = 1 
WHERE 
ID in (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"
…那么我不知道你想怎么缩短。您可以编写这样调用的存储过程:

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"

这就是您的想法吗?

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

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

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

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

如果要更新ID为1的其他订单,请使用其他人已过账的IN语句。如果不需要,请使用PDO和参数化查询。

如果要更新ID为1的其他订单,请使用其他已发布的IN语句。如果没有,请使用PDO和参数化查询。

I在phpmyadmin上运行此操作。如何在sql中放置循环?I在phpmyadmin上运行此操作。如何在sql中放置循环?