0

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

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

每个都有“代码”,因此一个表中的时间戳只能放在代码匹配的另一个表的时间戳中。

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

有什么建议么?

4

2 回答 2

2

听起来你想要一个相关的更新。destinationTable这将使用列上匹配的位置timestamp_col更新每一行。sourceTablecode

UPDATE destinationTable d
   SET timestamp_col = (SELECT s.timestamp_col
                          FROM sourceTable s 
                         WHERE s.code = d.code )
 WHERE EXISTS( SELECT 1
                 FROM sourceTable s
                WHERE s.code = d.code )
于 2012-05-04T20:25:25.860 回答
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
于 2012-05-05T23:15:23.763 回答