ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
複数のSELECT文の結果をマージする(UNION、UNION ALL)
スポンサード リンク

複数のSELECT文の結果をマージするには、UNION、またはUNION ALLを使用する

UNION SELECT結果をマージします。ALLが無い場合、マージ後に重複レコードは排除されます。

また、SELECT結果で取得する列は、それぞれ同じ列数でなければなりません
UNION ALL


サンプル表「emp01」データ
SQL> select * from emp01;

EMP DEP JOB FIRST_NAME LAST_NAME SALARY
--- --- --- ---------- ---------- ----------
E01 D01 J01 名字1     名前1     100
E02 D01 J01 名前2     名前2     250

サンプル表「emp02」データ
SQL> select * from emp02;

EMP DEP JOB FIRST_NAME LAST_NAME SALARY
--- --- --- ---------- ---------- ----------
E02 D01 J01 名前2     名前2     250
E03 D02 J02 名前3     名前3     200
E04 D02 J03 名前4     名前4     200


例1) 表「emp01」と表「emp02」のSELECT結果をマージします(UNION ALL)
SQL> select * from emp01
  2   union all
  3  select * from emp02;

EMP DEP JOB FIRST_NAME LAST_NAME SALARY
--- --- --- ---------- ---------- ----------
E01 D01 J01 名字1     名前1     100
E02 D01 J01 名前2     名前2     250
E02 D01 J01 名前2     名前2     250
E03 D02 J02 名前3     名前3     200
E04 D02 J03 名前4     名前4     200
 表「emp01」と表「emp02」のSELECTした列数が同じでないとUNIONはできない


例2) 表「emp01」と表「emp02」のSELECT結果をマージします(UNION)
SQL> select * from emp01
  2   union
  3  select * from emp02;

EMP DEP JOB FIRST_NAME LAST_NAME SALARY
--- --- --- ---------- ---------- ----------
E01 D01 J01 名字1     名前1     100
E02 D01 J01 名前2     名前2     250
E03 D02 J02 名前3     名前3     200
E04 D02 J03 名前4     名前4     200


スポンサード リンク


内部結合(INNER JOIN)
外部結合(OUTER JOIN、(+))
インラインビューの利用
複雑なSQLの可読性を高める(WITH句)
スカラー副問合せ
複数のSELECT文の結果をマージする(UNION、UNION ALL)
2つのSELECT文の結果の差異を取得する(MINUS)
2つのSELECT文の結果の重複データを取得する(INTERSECT)

SQL(DML2) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ