【SQL Server】INTERSECT で重複を取得する

複数の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でした。

コメント