副問い合わせの結果が存在する場合のみ検索対象とするには、EXIST句を使用します。
サンプル
例)TBL_AからTBL_Bに存在する行のみ抽出する
| col1 | col2 |
|---|---|
| 001 | a |
| 002 | b |
| 003 | c |
| 004 | d |
| 005 | e |
| col1 | col2 |
|---|---|
| a | 100 |
| c | 35 |
| e | 80 |
|
1 2 3 4 5 6 |
SELECT * FROM TBL_A WHERE EXISTS( SELECT 'X' FROM TBL_B WHERE TBL_A.col1 = TBL_B.col1 ) ; |
- SQL*Plus
- col1 col2 ----- ----- 001 a 003 c 005 e
解説
- IN句でも同様の抽出はできますが、EXIST句を使用した方がパフォーマンスが良いです。