如何根据另一个表中的id匹配在一个表中填充列数据(使用匹配表中的数据)

时间:2012-05-04 20:23:21

标签: oracle plsql cursor

在Oracle中我有两个表。两者都填充了数据并且有timestamp列。

一个表中的列填充了数据,另一个表没有。但我需要根据另一列的匹配从表中获取另一个表的列中的数据。

每个都有'代码',因此来自一个表的时间戳应该只放在代码匹配的另一个表的时间戳中。

我已经尝试了游标等,但似乎我错过了一些东西。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

听起来你想要一个相关的更新。这将使用destinationTable的{​​{1}}更新timestamp_col的每一行,其中sourceTable列匹配{。}}。

code

答案 1 :(得分:1)

为了完整起见,我想我会做这样的事情(未经测试),如果目的地有主键或唯一列:

UPDATE (
  SELECT d.primary_key AS pk, d.timestamp_col AS dest_col, MAX(s.timestamp_col) AS src_col
    FROM dest d
    JOIN src s ON d.code = s.code
    GROUP BY pk, dest_col
  ) j
  SET j.dest_col = j.src_col