2013-11-14 85 views
0

我正在尋找更新Table_B從我的Table_A的值,其中ID匹配和Table_A.col1值是最大的。MySQL UPDATE only max()

考慮將Table_A分成兩列B_idcol1Table_B有兩列idcol1

UPDATE Table_A, Table_B 
SET Table_B.col1 = Table_A.col1 
WHERE Table_B.id = Table_A.B_id 
--WHERE Table_A.col1 is maximal 

我知道,我的查詢的最後一行是不正確的,但我無法弄清楚如何在這裏使用MAX()。有什麼想法嗎?

+0

@ypercube'SET Table_B.col1 = Table_A.col1'我已經編輯所以它更清楚 – Wistar

+0

啊,我剛纔看到最後的編輯, 好。讓我寫下查詢。 –

回答

1
UPDATE Table_B AS b 
    JOIN (SELECT B_id, MAX(col1) AS max_col1 
     FROM Table_A 
     GROUP BY B_id 
     ) AS a 
    ON b.id = a.B_id 
SET b.col1 = a.max_col1 ; 
+0

它工作但它只更新了'Table_B'的第一行 – Wistar

+0

這將更新'B'的所有行'A'中的相關行。如果沒有工作,其他問題就是問題。用A和B的示例行編輯您的問題,以便我們可以檢查。 –

+0

對不起,這項工作就像一個魅力!當我根據自己的實際情況調整代碼時,我忘了「GROUP BY」。 – Wistar

0
AND TableB.col1 = (select MAX(col1) from TableB) 

(介意和代替WHERE)

+0

我有這樣的返回:#1093 - 你無法在FROM子句中指定目標表'Table_B'進行更新 – Wistar