SQL-SET演算子


UNIX,UNIX ALL:和セット
UNION
2つのクエリーで選択されたすべてのローが含まれますが、重複する値は1回のみ表示されます.
最初のカラム基準ASCソート.
UNION ALL
すべての重複行を含む2つのクエリーで選択されたすべての行が表示されます.
MINUS:サブセット
2番目の選択文で、最初の選択されていない文によって選択されたすべての一意の行.
(ORACLEにはありますが、他のDBMSにはありませんので、単独で実施する必要があります.)
INTERSECT:交差
INTERSECTは2つのクエリーを組み合わせて、最初の選択文で
2番目の選択文に一致する少なくとも1行を返します.
SET演算子使用説明
  • SELECTリストの式の数とデータ型は一致する必要があります.
  • ORDER BYセクションは、文の最後にのみ使用できます.
  • ORDER BYセクションで使用されるカラム名またはエイリアスは、第1のSELECT文リストと一致する必要があります.
  • SET演算子は、サブクエリで使用できます.
  • 例1)
    SELECT deptno, to_char(null) location, hiredate
      FROM emp 
    UNION
    SELECT deptno, dname, to_date(null)
      FROM dept;
    TO CHAR(NULL)、TO DATE(NULL)は、DNOM、HIREDATE、およびデータ型に一致するように生成される列である.
    例2)「FORDの上司=>JONES」として、上司がいない社員は「上司がいない」として問い合わせる.
    ----OUTER JOIN 사용
    SELECT LPAD(E.ENAME || '의 상사 => ' || NVL(M.ENAME,'상사없음'), 30) 사원상사
    FROM EMP E
    LEFT OUTER JOIN EMP M ON E.MGR = M.EMPNO;
    
    ----⭐⭐UNION ALL 사용
    SELECT LPAD(W.ENAME,10) ||'의 상사 => ' ||M.ENAME 사원상사
    FROM EMP W, EMP M
    WHERE W.MGR = M.EMPNO
    UNION ALL
    SELECT  LPAD(ENAME,10) ||'의 상사 => 상사없음'
    FROM EMP
    WHERE MGR IS NULL;