2013-11-14 56 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