如何基于联接表中的SELECT MAX()更新MySQL表
我有两个MySQL表如何基于联接表中的SELECT MAX()更新MySQL表,mysql,select,join,set,Mysql,Select,Join,Set,我有两个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 ... 我想将表B中基于ID的MAXPoints值存
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
...
我想将表B中基于ID的MAXPoints值存储在表A的Total列中
我有一个MySQL查询,可以获取最大点。我不想在循环使用MAX查询的结果集时编写一个单独的更新查询,而是想知道是否可以使用某种连接和选择集在一个MySQL查询中完成这一切
这是否可以将2个查询合并为1个查询
以下是我的最大查询:
$result = mysql_query('
SELECT id, MAX(Points)
FROM TableB
WHERE year = "' . date('Y') . '"
GROUP BY id
') or die(mysql_error());
while ($row = mysql_fetch_row($result)) {
mysql_query('
UPDATE TableA
SET Total = "' . $row[1] . '"
WHERE id = "' . $row[0] . '"
') or die(mysql_error());
}
mysql_free_result($result);
谢谢尝试将此用作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
好啊等一下,我会安排一个测试,然后再打给你。谢谢@nurdglaw。我喜欢这种可能性。非常感谢您的编码帮助。@H.Ferrence-抱歉,这比我预期的要难。似乎我不能将GROUPBY与多表更新一起使用,而且我还没有设法使子查询工作。仍在尝试…我在想我需要加入这两个表,并以某种方式做一个集合total=SELECT…某种程度上我在上面的第二次尝试中尝试了一下-我已经测试了这个-