我有两个表A和B(oracle数据库)。表B有两列Id和mdate,其中id是主键。表A有两列Id和mdate,其中id是外键。我想更新表B mdate值,该值应该是表A中的max mdate值以匹配Id。
Update b
set mdate= (select max(mdate) from a group by Id)
where b.id = a.id;
答案 0 :(得分:0)
你非常接近。需要将WHERE
子句移动到子查询中,以使其成为相关子查询。此外,UPDATE
的参数是表名,而不是列名。
UPDATE b
SET mdate = (SELECT MAX(mdate) FROM a WHERE b.id = a.id)
在MySQL中,您也可以使用JOIN
:
UPDATE b
JOIN (SELECT id, MAX(mdate) AS mdate
FROM a
GROUP BY id) AS a ON a.id = b.id
SET b.mdate = a.mdate
答案 1 :(得分:0)
Update b
set(b.mdate) = (select MAX(a.mdate) from a where b.id = a.id)
where exists ( select 1 from a where b.id = a.id);
感谢Barmar先生。