SQL-92/99 Oracle Db2 SQL Server MySQL PostgreSQL Access

SELECT文1


INTERSECT [ ALL ]


SELECT文2

INTERSECTはSELECT文1の問い合せ結果とSELECT文2の問い合せ結果の積集合を求めるときに使用します。


OracleではALLキーワードを指定できません。


関連キーワード





SQL実行例の説明(1)

T1_SAMPLE_BK表とT1_SAMPLE表、それぞれの問い合せ結果から積集合のデータを取得します。

・SELECT文1はT1_SAMPLE_BK表の問い合せ結果であるすべてのデータを取得します。

・SELECT文2はT1_SAMPLE表の問い合せ結果であるすべてのデータを取得します。


SELECT * FROM T1_SAMPLE_BK

INTERSECT

SELECT * FROM T1_SAMPLE;


SQL実行の結果(1-1)

・T1_SAMPLE_BK表とT1_SAMPLE表の両方に格納されているデータはSERIAL203001203003の2つ。(左)

・INTERSECTを使用した積集合はこの2件のデータを取得することになります。(右)


SERIALI1_CODEI2_CODEI_COST
203001101102500
203002201206500
203003301309800
203004201205500
203005201205600
203006202205600

T1_SAMPLE


SERIALI1_CODEI2_CODEI_COST
191001101101500
191002201205500
191003301307800
191004201206500
203001101102500
203003301309800

T1_SAMPLE_BK

SQL Result
SERIALI1_CODEI2_CODEI_COST
203001101102500
203003301309800



SQL実行例の説明(2)

INTERSECTではALLキーワードを指定することで複数のSELECT文の問い合せ結果の積集合を求めるとき重複するデータも含めた積集合を求めることができます。


SELECT * FROM T1_SAMPLE_BK

INTERSECT ALL

SELECT * FROM T1_SAMPLE;


SQL実行の結果(2-1)

・T1_SAMPLE_BK表とT1_SAMPLE表の両方に格納されているデータはSERIAL203001203003の2つ、合計4件のデータ。(左)

・ALLキーワードが指定された積集合ではこの合計4件のデータを取得することになります。(右)


SERIALI1_CODEI2_CODEI_COST
203001101102500
203002201206500
203003301309800
203004201205500
203005201205600
203006202205600

T1_SAMPLE


SERIALI1_CODEI2_CODEI_COST
191001101101500
191002201205500
191003301307800
191004201206500
203001101102500
203003301309800

T1_SAMPLE_BK

SQL Result
SERIALI1_CODEI2_CODEI_COST
203001101102500
203003301309800
203001101102500
203003301309800