2
私はINTERSECTION
を2つのselect文の間に置かなければなりません。両方のselectステートメントがいくつかの結果セットを返す場合にのみ、条件が発生します。いずれかがO行を返す場合、交差は機能しません。最終結果は、いくつかの行を戻した文でなければなりません。これはSQL
で可能ですか(回答はpl/sql
には必要ありません)?ORACLEのINTERSECT(SQLはPL/SQLではない)
私はINTERSECTION
を2つのselect文の間に置かなければなりません。両方のselectステートメントがいくつかの結果セットを返す場合にのみ、条件が発生します。いずれかがO行を返す場合、交差は機能しません。最終結果は、いくつかの行を戻した文でなければなりません。これはSQL
で可能ですか(回答はpl/sql
には必要ありません)?ORACLEのINTERSECT(SQLはPL/SQLではない)
これは、この構成で実現できます。
with t1 as (select level id from dual where 1 = 0 connect by level <= 3),
t2 as (select level id from dual where 1 = 1 connect by level <= 5)
select distinct *
from t1
where exists (select null from t2 where id = t1.id)
or (select count(1) from t2) = 0
union all
select distinct * from t2 where (select count(1) from t1) = 0
t1
とt2
いくつかのデータをシミュレートします。 にデータがない場合、最初にselect
が交差を作成するか、最初のテーブルからすべての別個の行を取得します。 第2のselect
(union all
以降)は、t1
に行がない場合、t2
からすべてのデータを取得します。
編集:あなたはsimplierそれを行うことができます。
後半のコメントをselect * from t1
intersect
select * from t2
union
select * from t1 where (select count(1) from t2) = 0
union
select * from t2 where (select count(1) from t1) = 0
申し訳ありません。これは非常によく説明された完璧な解決策です。それは私のために働いた。ありがとうalot :-) –