我有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
由于
答案 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