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