【SQL】MINUS 複数のSELECT結果の差を取得する(差集合)
差集合
Oracleでは「MINUS」を使用して複数のSELECT結果の差(差集合)を取得することができます。
例えば、テーブルAとテーブルBがあり、テーブルAだけに存在し、テーブルBには存在しないレコードを検索したいときに「MINUS」を使用します。
「MINUS」はいわゆる差集合です。特定テーブルだけに存在するレコードの抽出です。
MINUS
- 複数のSELECT結果の差を取得する
例1. MINUSで2つのテーブルの差を検索するパターン
--野球部のメンバーを取得する SELECT stuno,stuname FROM act_baseball;
stuno | stuname |
15 | 佐藤太郎 |
20 | 山田一郎 |
44 | 田中花子 |
--サッカー部のメンバーを取得する SELECT stuno,stuname FROM act_soccer;
stuno | stuname |
8 | 伊藤一 |
10 | 加藤和也 |
44 | 田中花子 |
--野球部だけに所属している(野球部に所属しサッカー部に所属していない) --メンバーを取得する SELECT stuno,stuname FROM act_baseball MINUS SELECT stuno,stuname FROM act_soccer order by 1;
stuno | stuname |
15 | 佐藤太郎 |
20 | 山田一郎 |
OracleではMINUSを使用することで別テーブル同士のSELECT結果の差を取得することができます。
上の例では、野球部に所属していてサッカー部に所属していないメンバー、つまり野球部だけに所属しているメンバーを取得しました。
テーブルは2つだけでなく、MINUSで3つ・4つ以上のテーブルの差を取得できます。注意点としては、SELECTするテーブルの列は同じ数でないといけません。
以上、Oracleで複数のSELECT結果の差を取得する(差集合)するMINUSでした。
コメント