SQL-92/99 Oracle Db2 SQL Server MySQL PostgreSQL Access
SELECT文1
UNION [ ALL ]
SELECT文2
UNIONはSELECT文1の問い合せ結果とSELECT文2の問い合せ結果の和集合を求めるときに使用します。
このとき問い合せ結果の列数とデータ型が一致している必要があります。
関連キーワード
SQL実行例の説明(1)
T1_SAMPLE_BK表とT1_SAMPLE表、それぞれの問い合せ結果から和集合のデータを取得します。
・SELECT文1はT1_SAMPLE_BK表の問い合せ結果であるすべてのデータを取得します。
・SELECT文2はT1_SAMPLE表の問い合せ結果であるすべてのデータを取得します。
SELECT * FROM T1_SAMPLE_BK
UNION
SELECT * FROM T1_SAMPLE;
SQL実行の結果(1-1)
・T1_SAMPLE_BK表とT1_SAMPLE表の両方に格納されているデータはSERIALが203001と203003。(左)
・UNIONを使用した和集合では両方に含まれるデータ(重複したデータ)は一方のデータを取得することになります。(右)
SERIAL | I1_CODE | I2_CODE | I_COST |
---|---|---|---|
203001 | 101 | 10 | 2500 |
203002 | 201 | 20 | 6500 |
203003 | 301 | 30 | 9800 |
203004 | 201 | 20 | 5500 |
203005 | 201 | 20 | 5600 |
203006 | 202 | 20 | 5600 |
T1_SAMPLE
SERIAL | I1_CODE | I2_CODE | I_COST |
---|---|---|---|
191001 | 101 | 10 | 1500 |
191002 | 201 | 20 | 5500 |
191003 | 301 | 30 | 7800 |
191004 | 201 | 20 | 6500 |
203001 | 101 | 10 | 2500 |
203003 | 301 | 30 | 9800 |
T1_SAMPLE_BK
SERIAL | I1_CODE | I2_CODE | I_COST |
---|---|---|---|
191001 | 101 | 10 | 1500 |
191002 | 201 | 20 | 5500 |
191003 | 301 | 30 | 7800 |
191004 | 201 | 20 | 6500 |
203001 | 101 | 10 | 2500 |
203003 | 301 | 30 | 9800 |
203002 | 201 | 20 | 6500 |
203004 | 201 | 20 | 5500 |
203005 | 201 | 20 | 5600 |
203006 | 202 | 20 | 5600 |
SQL実行例の説明(2)
UNIONではALLキーワードを指定することで複数のSELECT文の問い合せ結果の和集合を求めるとき重複するデータも含めた和集合を求めることができます。
SELECT * FROM T1_SAMPLE_BK
UNION ALL
SELECT * FROM T1_SAMPLE;
SQL実行の結果(2-1)
・T1_SAMPLE_BK表とT1_SAMPLE表の両方に格納されている重複したデータはSERIALが203001と203003の2件。(左)
・ALLキーワードが指定された和集合では重複したデータも含めたデータを取得することになります。(右)
SERIAL | I1_CODE | I2_CODE | I_COST |
---|---|---|---|
203001 | 101 | 10 | 2500 |
203002 | 201 | 20 | 6500 |
203003 | 301 | 30 | 9800 |
203004 | 201 | 20 | 5500 |
203005 | 201 | 20 | 5600 |
203006 | 202 | 20 | 5600 |
T1_SAMPLE
SERIAL | I1_CODE | I2_CODE | I_COST |
---|---|---|---|
191001 | 101 | 10 | 1500 |
191002 | 201 | 20 | 5500 |
191003 | 301 | 30 | 7800 |
191004 | 201 | 20 | 6500 |
203001 | 101 | 10 | 2500 |
203003 | 301 | 30 | 9800 |
T1_SAMPLE_BK
SERIAL | I1_CODE | I2_CODE | I_COST |
---|---|---|---|
191001 | 101 | 10 | 1500 |
191002 | 201 | 20 | 5500 |
191003 | 301 | 30 | 7800 |
191004 | 201 | 20 | 6500 |
203001 | 101 | 10 | 2500 |
203003 | 301 | 30 | 9800 |
203001 | 101 | 10 | 2500 |
203002 | 201 | 20 | 6500 |
203003 | 301 | 30 | 9800 |
203004 | 201 | 20 | 5500 |
203005 | 201 | 20 | 5600 |
203006 | 202 | 20 | 5600 |