0

Oracleで更新ステートメントを作成しようとしています。これがSQLServerのバージョンです。

  UPDATE ev
  SET   
     (ev.station_type = t.st_type, ev.adt = t.adt  )
  FROM  source ev 
  JOIN  dataTbl t
  ON ev.counterID = t.counterID

2つのテーブルソーステーブルがあります。counterIDは主キーdataTBLテーブルです。counterIDは外部キーです。dataTBLからソーステーブルにデータを取得しようとしています。

誰かがアップデートのOracleバージョンを作成するのを手伝ってくれれば幸いです。ありがとう、Greener

4

2 に答える 2

0

次の構文が機能すると思います(チェックするオラクルは手元にありません):

UPDATE ev
SET (station_type, adt ) = (
   SELECT (t.st_type, t.adt)
   FROM dataTbl t
   WHERE t.counterId = ev.counterId
)
WHERE ev.counterId IN (SELECT t.counterID FROM t);

編集: WHERE 句の繰り返しは見苦しく見えますが、@Steve が指摘しているように、一致するエントリがない行に null を挿入しないようにする必要がありdataTblます (もちろん、ユースケースで可能性がある場合)。そのような予防措置が必要な場合は、@Steve の結合ベースのソリューションが望ましい場合があります。

于 2009-07-24T18:52:11.290 に答える