我想根据另一个表最大值更新表值

时间:2017-11-06 18:46:13

标签: mysql oracle oracle11g oracle-sqldeveloper

我有两个表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;

2 个答案:

答案 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先生。