Oracle Sql-2つのテーブルがあり、table2の結果でtable1をフィルタリングする必要があります。table2が空の場合、table1のすべてを返す必要があります

マット

現在、コンマ区切りの文字列をフィールド名IDの数値テーブルに変換しています。次に、生成されたテーブルがnullの場合、nvlを実行してすべてを選択しようとしています。

table1.ID = NVL(table2.ID, table1.ID)

2つのテーブルがあり、table2の結果でtable1をフィルタリングする必要があります。table2が空の場合、table1のすべてを返す必要があります。

シナリオI

表1

ID    
1    
2    
3    
4

表2(空)

ID

Return rows 1, 2, 3, 4

シナリオII

表1

ID    
1    
2    
3    
4

表2

ID    
2
3

行2、3を返す

ゴードン・リノフ

次のwhere句でフィルタリングを使用できます

select t1.id
from table1 t1
where not exists (select 1 from table2) or
      exists (select 1 from table2 t2 where t2.id = t1.id);

joinこの論理を表現する正しい方法だと思いません

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ