在 Oracle 中,我有两个表。两者都填充了数据并有一timestamp
列。
一个表的该列填充了数据,另一个表没有。但是我需要根据另一列的匹配从表中获取数据到另一表的列中。
每个都有“代码”,因此一个表中的时间戳只能放在代码匹配的另一个表的时间戳中。
我试过游标等,但似乎我错过了一些东西。
有什么建议么?
听起来你想要一个相关的更新。destinationTable
这将使用列上匹配的位置timestamp_col
更新每一行。sourceTable
code
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 )
只是为了完整起见,如果目标具有主键或唯一列,我想我会做这样的事情(未经测试):
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