2010-09-13 84 views
0

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

可以说我有此查询

UPDATE table1 
SET 
Order = 1 
WHERE 
ID = 1234 

但我想改变一些更多的订单,其中ID是2345和2837和8399
我会怎么做同样的MySQL查询中。请注意,这些订单可能与1不同。因为订单字段是唯一的。

回答

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

如果你需要的Order不同的值,每个ID,那么你可能想提出一个循环中的任何程序谈话的数据库。

编辑补充

我想在程序循环的,但我看你要交互式地执行SQ​​L。

如果你想绑定不可预测的数字序列是这样的:

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" 

这是你有什么想法?

+0

编辑了这个问题 – Autolycus 2010-09-13 21:48:35

+0

我在phpmyadmin..how上运行这个会在sql中放一个循环吗? – Autolycus 2010-09-13 21:49:49

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

可以更新多行,但是你不能命令字段设置为不同的值,所以所有订单字段(匹配ID)如果您想将具有值1

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

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

+0

我该怎么做? – Autolycus 2010-09-13 21:53:47

+0

http://stackoverflow.com/questions/330268/i-have-an-array-of-integers-how-do-i-use-each-one-in-a-mysql-query-in-php/330280 #330280 – sled 2010-09-13 22:51:39