2013-06-04 106 views
-1

我有以下數據:只用一個查詢更新多行?

id = 1 
name = 'john' 

id = 2 
name = 'jimmy' 

有沒有辦法來更新我的表只使用一個查詢?

Table 
id | name 
1 | johnny 
2 | james 
+0

檢查此博客:http://www.kavoir.com/2009/05/mysql-update-multiple-rows-with-one-single-query.html - 第一個結果,當我搜索更新多行與單個查詢 – karthikr

回答

1

馬丁·史密斯的解決方案肯定是少數行的最佳解決方案實現這一目標。如果要更新更多行數,最好使用不同的值發佈幾個UPDATES,可能需要準備好的語句。

只是爲了好玩,我設計了另一種解決方案:

  • 創建一個臨時MEMORY
  • 插入你的價值觀到這個表(可一次性完成,如果你正確地構建你的插入查詢)
  • 用這樣的查詢更新你的主表:UPDATE your_table JOIN temp_table ON (<insert JOIN condition here>) SET your_table.field1 = temp_table.field1, your_table.field2 = temp_table.field2

好吧,這個味道。認真。使用準備好的UPDATE

5

您可以CASE

UPDATE YourTable 
SET name = CASE 
       WHEN id = 1 THEN 'johnny' 
       ELSE 'james' 
       END 
WHERE id IN (1, 2) 

或者另一種可能性(SQL Fiddle

UPDATE YourTable a 
JOIN 
    (SELECT 1 AS id, 'johnny' AS name 
    UNION ALL 
    SELECT 2 AS id, 'james' AS name 
    ) b ON 
    b.id = a.id 
SET a.name = b.name; 
+0

這不是真正可擴展的。我將要做約100行 – panthro

+0

因此,請提出反映您實際需求的問題!這100行的來源是什麼?另一張桌子? –

+0

一個php的價值觀 – panthro