使用另一个表中的数据更新表

时间:2014-01-27 17:27:45

标签: sql

所以我有两个列的TABLE_ONE ... ID和EXPIRE_DATE

除了EXPIRE_DATE之外,

和TABLE_TWO具有相同的两列具有虚拟值,需要从第一个表中填充。

我需要从TABLE_ONE获取给定ID的最新EXPIRE_DATE(最近添加的最新日期),并使用该EXPIRE_DATE填充TABLE_TWO中该ID的所有出现。

我猜很清楚ID在两个表中都不是PK。它再次发生。

我如何写这个TABLE_TWO的更新?

谢谢!

2 个答案:

答案 0 :(得分:0)

这样的事情:

update table2
set expire_date = expdate
from table2 join 
(select id, max(expire_date) expdate
from table1
where whatever
group by id ) temp on table2.id = temp.id
where whatever

请注意,您的两个where子句应该相同。

答案 1 :(得分:0)

您可以使用set子句中的相关子查询执行此操作:

update table_two
    set expire_date = (select max(t1.expire_date) from table_one t1 where t1.id = table_two.id);

这是标准的SQL语法,应该适用于所有(或几乎所有数据库)。有些数据库允许update子句中的连接,但不是全部。即使在那些中,语法也会有所不同。