ORACLE/SQL
잡동사니 퀴리
argoLee
2017. 7. 5. 15:35
- OR 조건을 UNION ALL로 변경 시에 중복 값을 제거 하기
-
* OR 조건을 UNION ALL로 변경 시에 중복 값을 제거(LNNVL 함수 사용)
SELECT /*+ QB_NAME(MAIN) USE_CONCAT */
e.empno , e.ename , d.dname
FROM emp e , dept d
WHERE e.deptno = d.deptno
AND (d.deptno IN (10,20) OR e.mgr IN ( 7839 , 7698 )) ;
==>
SELECT /*+ QB_NAME(MAIN1) */
e.empno , e.ename , d.dname
FROM emp e , dept d
WHERE e.deptno = d.deptno
AND e.mgr IN ( 7839 , 7698 )
UNION ALL
SELECT /*+ QB_NAME(MAIN2) */
e.empno , e.ename , d.dname
FROM emp e , dept d
WHERE e.deptno = d.deptno
AND d.deptno IN (10,20)
AND (lnnvl(e.mgr = 7839) AND lnnvl(e.mgr = 7698 )) ;