2013-02-02 191 views
1

我有2個表更新記錄

表A如下:

ID NAME VALUE 
1 abc 0 
2 lmn 0 
3 xyz 0 

B表如下:

ID SUB_GROUP VALUE 
1 Category 1 10 
1 Category 2 4 
1 Category 3 8 
1 Category 4 12 
3 Category 1 6 
3 Category 2 14 
3 Category 3 0 
3 Category 4 3 

我想更新表A,方法是將表列中的VALUE列設置爲表B中的最大值,方法是匹配ID列,但僅針對Category2或Category 3中的表B中的值。

MySQL查詢可能是什麼樣的?

+0

這將是一個子查詢的更新。看起來非常簡單。但是,這取決於你使用的是哪個版本的SQL ..? – Rob

+0

這是您想要的按需調用,還是您希望TableA總是**具有所描述的最大值? – leftclickben

+0

我正在運行MySQL:5.1.67 @Rob –

回答

1
UPDATE tableA a 
     INNER JOIN 
     (
      SELECT ID, MAX(Value) max_val 
      FROM tableB 
      WHERE SUB_GROUP IN ('Category 2','Category 3') 
      GROUP BY ID 
     ) b ON a.ID = b.ID 
SET a.VALUE = b.Max_Val 
+0

謝謝@JW ...我現在就試試這個。 –

+0

獲取此消息「每個派生表都必須有自己的別名」繼續工作 –

+0

@ H.Ferrence我很確定你的查詢有一些錯字嗎?你可以展示給我看,這樣我們可以解決它嗎? ':D'上面的查詢在小提琴上工作。 –