- 締切済み
MINUS の結果の rowid を取得したい
テーブル A, A@other のデータの全カラムの MINUS の結果を取得しその結果レコードの rowid を 取得する方法を検討しています。 A, A@other は異なるインスタンスの同一定義のテーブルです。 このとき、動的SQL を使用し テーブ ルA, A@other には任意のセットが入ります。 対象のテーブルには主キーが無い場合が有ります。 このような時に期待した結果を効率良く取得する方法をご教示下さい。 環境は Oracle 9iR2 (Miracle Linux 4)を使用しています。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- entree
- ベストアンサー率55% (405/735)
回答No.1
MINUS句を使用したSQLはNOT EXISTS句を使用したSQLに置き換えれられるかと思います。 NOT EXISTS句を使用したSQLではROWIDも指定できます。 例えば、MINUS句を使用した以下のSQLは・・・ select cola1, cola2, cola3 from taba minus select colb1, colb2, colb3 from tabb; ↓ select rowid, cola1, cola2, cola3 from taba where exists (select * from tabb where cola1 = colb1 and cola2 = colb2 and cola3 = colb3);
お礼
この方法だと主キーの無いテーブルの場合全カラムを WHERE 句で評価するクエリになるため、パフォーマンスが厳しいところがあるので敬遠していました。 どうもこの方方法しかなさそうですね。 こちらの方法で検討を進めます。 ありがとうございます。