2つのSELECT結果の差分を抽出するには、MINUSを使用します。
厳密にいうと、最初のSELECT結果から後のSELECT結果を除いた結果が返ります。
(最初のSELECT結果のみに存在するものが返る)
構文
- (2つのSELECT結果の差分を抽出する)
- <SELECT文1> MINUS <SELECT文2>
SELECT文1の結果からSELECT文2の結果を引いたものが抽出されます。
サンプル
CD | NAME |
---|---|
101 | 鈴木 |
102 | 佐藤 |
103 | 田中 |
CD | NAME |
---|---|
104 | 山田 |
105 | 高橋 |
101 | 鈴木 |
例)M_USER01とM_USER02の差分を求める
1 2 3 |
SELECT cd, name FROM m_user01 MINUS SELECT cd, name FROM m_user02; |
- 結果
- CD NAME ---- ------ 102 佐藤 103 田中
102佐藤さんと103田中さんは、前のSQL結果のみに存在しているので抽出対象となります。
後のSQL結果のみに存在する104山田さんと105高橋さんは、抽出対象となりません。
メモ
- MINUSでつなぐSELECT結果は、型と個数が合っている必要があります。
- MINUSを使わない方法は以下ページをご覧ください。
[ORACLE] 同じ構成の2つのテーブルのデータの差分を取得するSQL
[…] [SQL] 2つのSELECT結果の差分抽出する(MINUS) | ORACLE逆引きノートhttps://oracle.programmer-reference.com/sql-minus/oracle.programmer-reference.com […]