限定しりとり

テーブル A, A@other のデータの全カラムの MINUS の結果を取得しその結果レコードの rowid を
取得する方法を検討しています。

A, A@other は異なるインスタンスの同一定義のテーブルです。

このとき、動的SQL を使用し テーブ ルA, A@other には任意のセットが入ります。
対象のテーブルには主キーが無い場合が有ります。

このような時に期待した結果を効率良く取得する方法をご教示下さい。

環境は Oracle 9iR2 (Miracle Linux 4)を使用しています。

A 回答 (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);
    • good
    • 0
この回答へのお礼

この方法だと主キーの無いテーブルの場合全カラムを WHERE 句で評価するクエリになるため、パフォーマンスが厳しいところがあるので敬遠していました。
どうもこの方方法しかなさそうですね。

こちらの方法で検討を進めます。
ありがとうございます。

お礼日時:2012/03/29 11:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す