私はnote
列のテーブルを持っていて、値は「開始」または「終了」です。そして、同じ値を持つことができる他の列がありますが、違いはその 'ノート'列にあります...SQLクエリが複雑すぎる
'メモ'が '開始'に設定されている行を選択する必要がありますが、同じ値を持つ行はなく、 'note'は 'End'に設定されています。申し訳ありませんが、説明するのは難しいです。私はいくつかの例を見せようとします。
Coll1 Coll2 Coll3 note
-----------------------------
a a a Start
a a a End
b b b Start
b b b End
c c c Start <- I need select those rows
-- There is no row with 'c c c End' combination in the table
d d d Start
d d d End
e e e Start <- I need select those rows
-- There is no row with 'e e e End' combination in the table
誰でも教えてください。
なぜあなたは反結合パターンを提案しますか?このトリックは、 'EXISTS'と' IN'をうまく扱えない(弱い)DBMSで使われます。これは読みやすさの犠牲を払って行われます。オラクルはそのようなトリックは必要ありません。あなたの質問はできるだけ読みやすくしてください。データ*がセットに存在するかどうかを確認するには、* exists *または* in *を使用します。 –
まず、私はこのプリミティブなクエリを考えています。あなたは多くの方法でそれをデザインすることができます。それは本当にあなたが2つのセットの相互作用を想像する方法です。誰かが1つのセットを見て、他のセットで一致するものがあるかどうかを調べることが好きです。私は、セットをマージし、データを見て、私が必要としない行を削除することを好む。第二に、私は 'EXISTS'サブクエリの' t1'を参照することでそれ以上の読み込みができないとは思いません。私は本当にしません。 –