2012-04-18 70 views
0

我知道這不工作:SQL更新具有不同參數的多條記錄或值

UPDATE `states` SET `country_id` = '83', `position` = (1,2,3) WHERE `states`.`id` IN (381, 378, 380); 

有沒有辦法更新基於

id = 381; position = 1 
id = 378; position = 2 
id = 380; position = 3 

由於該行。

+0

你如何生成的ID和位置的列表更新?他們是否從某種評分系統中產生?可能有多少人? – liquorvicar 2012-04-18 18:00:50

回答

3

最簡單的是使用三個單獨的查詢。

有可能與一個單一的查詢,但更復雜:

UPDATE states 
SET country_id = '83', 
    position = CASE id WHEN 381 THEN 1 
         WHEN 378 THEN 2 
         WHEN 370 THEN 3 END 
WHERE id IN (381, 378, 380) 
+0

我能想到的一個就是'case'。我只是擔心性能問題,因爲我可能有10個或20個項目需要立即更新。 – Victor 2012-04-18 16:33:43

相關問題