2013/08/28

11-07.サブクエリ(Subquery)【UNION [ALL], INTERSECT, MINUS演算子】

■UNION [ALL]、INTERSECT、MINUS演算子
 -UNIONとUNION ALLの違いは整列作業があるか、ないか。
 -UNIONは重複を除去のため整列を実行するので性能が落ちる
 -UNION、MINUS、INTERSECTは全体範囲をアクセスする整列作業を実行するので一部範囲の処理が不可能。

■UNION
 -UNIONは2つのテーブル結合で、結合する2つのテーブルの重複しない値を返す。

--部署番号を検索するUNION例
SQL> SELECT deptno FROM emp
  2  UNION
  3  SELECT deptno FROM dept;

    DEPTNO
----------
        10
        20
        30
        40



■UNION ALL
 -UNIONと同じだけど、重複する値も返す。

--部署番号を検索するUNION ALL例
SQL> SELECT deptno FROM emp
  2  UNION ALL
  3  SELECT deptno FROM dept;

    DEPTNO
----------
        20
        30
        20
        30
        30
        10
        20
        10
        30
        20
        30
        20
        10
        10
        20
        30
        40

17行が選択されました。



■INTERSECT
 -INTERSECTは2行の集合で共通の行を返す

--部署番号を検索するINTERSECT例
SQL> SELECT deptno FROM emp
  2  INTERSECT
  3  SELECT deptno FROM dept;

    DEPTNO
----------
        10
        20
        30



■MINUS
 -MINUSは最初のSELECT文による結果行の中で、2つ目のSELECT文による結果行に存在しない行を返す。

--社員がいない部署を検索するMINUS例
SQL> SELECT deptno FROM dept
  2  MINUS
  3  SELECT deptno FROM emp;

    DEPTNO
----------
        40

0 件のコメント:

コメントを投稿

QLOOKアクセス解析