0

Oracleには2つのテーブルがあります。どちらにもデータが入力され、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 に答える