如何根据JOINED表中的SELECT MAX()更新MySQL表

时间:2013-06-19 13:52:48

标签: mysql select join set

我有2个MySQL表。

TableA
ID Total
01 0
02 0
03 0
...
99 0

TableB
ID Name Points Year
01 Joe  4      2013
01 Bill 2      2013
02 Sam  10     2013
02 Barb 1      2013
02 Joan 7      2013
...
15 Fred 0      2013
15 Jan  3      2013
...

我想根据MAX(Points) <{1}}列Table B中的ID来存储来自Total的{​​{1}}值

我有一个MySQL查询,它让我Table A。而不是在循环查看我的MAX(Points)查询的结果集时编写单独的UPDATE查询,我想知道我是否可以使用Join和MAX()在一个MySQL查询中完成所有这一切某种。

这可以将2个查询合并为1吗?

这是我的MAX()查询:

SET SELECT

由于

1 个答案:

答案 0 :(得分:3)

尝试将此作为您的SQL语句:

UPDATE TableA, TableB
SET TableA.Total = Max(TableB.Points)
WHERE TableA.ID=TableB.ID
AND TableB.year=<whatever>

选择2

好的,试试这个

UPDATE tablea
JOIN (
    SELECT id, max(points) AS total
    FROM tableb
    WHERE year=<whatever>
    GROUP BY id
) AS sub ON tablea.id=sub.id
SET tablea.total=sub.total