SQL INTERSECTのサンプル(一致行を抽出する)

SQLのINTERSECT演算子で2つのテーブルの一致した行を抽出するサンプルです。

目次

説明 INTERSECT演算子(2つのテーブルの一致した行を抽出する)
サンプル INTERSECTを使用したサンプル
  比較するテーブルの値が異なっていた場合

INTERSECT演算子(2つのテーブルの一致した行を抽出する)

select * from テーブルA
INTERSECT
select * from テーブルB
  • テーブルAで取得した行とテーブルBで取得した行を全ての列の値で比較し、列の値がすべて一致する行を抽出します。
    →2つのテーブルの列数が同じであることが必要です。列名は異なっていても実行できます。
  • 集合演算子で、積集合を求めます。
  • intersectは、交差するという意味です。
  • 以下は、Oracleの集合演算子のリンクです。
    https://docs.oracle.com/cd/E16338_01/server.112/b56299/queries004.htm

 

INTERSECTを使用したサンプル

INTERSECT演算子で2つのテーブルを比較し、一致した行を表示するサンプルです。

以下、2つのテーブルがあるとします。

employeeテーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 佐藤 sato
employee_beforeテーブル
id name romaji
2 田中 tanaka
4 高橋 takahashi

 

INTERSECTを使用したSQLを実行します。

select * from employee 
INTERSECT
select * from employee_before

 

結果は、以下のとおりです。

employee_beforeテーブル
id name romaji
2 田中 tanaka

employeeテーブルとemployee_beforeテーブルで一致した行が表示されます。

 

比較するテーブルの値が異なっていた場合

比較するテーブルの値が異なっていた場合は、一致した行として抽出されません。

以下、2つのテーブルがあるとします。

employeeテーブル
id name romaji
1 鈴木 suzuki
2 田中 NULL
3 佐藤 sato

2行目は、列のromajiの値がnullです。

employee_beforeテーブル
id name romaji
2 田中 tanaka
4 高橋 takahashi

 

INTERSECTを使用したSQLを実行します。

select * from employee 
INTERSECT
select * from employee_before

 

結果は、以下のとおりです。

抽出結果
id name romaji
     

employeeテーブルとemployee_beforeテーブルの2行目のデータは一致とみなされないので抽出結果はありません。

関連の記事

SQL UNIONとUNION ALLのサンプル(結合して抽出)
SQL MINUSのサンプル(差分を抽出する:Oracle)

△上に戻る