2010-09-13 83 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