[오라클|Oracle] UNION / UNION ALL |
두 개 이상의 테이블을 하나의 테이블인 합쳐서 써야 할 때가 있습니다.
그런 경우 UNION을 사용하시면 됩니다.
SELECT SYSDATE FROM DUAL;
|
SYSDATE |
1 |
2013/09/27 12:02:17 |
SELECT TABLE_NAME FROM TABS
WHERE ROWNUM = 1;
|
TABLE_NAME |
1 |
ACTIVITY |
이렇게 두 개의 테이블이 있고, 이 두 테이블을 하나의 테이블로 합치고 싶다면,
|
이렇게 하시면
'ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다.'
라는 에러가 뜨실 겁니다.
이유는...
SELECT SYSDATE UNION_1 FROM DUAL
UNION
SELECT TABLE_NAME UNION_1 FROM TABS
WHERE ROWNUM = 1;
이 두 컬럼의 데이타 타입이 다르기 때문입니다.
|
|
UNION_1 |
1 |
2013/09/27 12:02:17 |
2 |
ACTIVITY |
이렇게 데이타 타입을 맞추어 주시면 하나의 테이블처럼 조회됩니다.
|
ORDER BY는 마지막에 한 번만 넣어주시면 됩니다.
※ UNION 과 UNION ALL 의 차이
UNION 은 모든 값이 동일한 ROW 가 여러개 있을 경우, 하나의 ROW로 합쳐서 조회가 되는 반면,
UNION ALL 은 중복된 ROW가 있을 경우, 그냥 모든 ROW를 조회해서 보여준다는 차이 입니다.
'IT 개발' 카테고리의 다른 글
[오라클|Oracle] GROUP 별로 따로 ROWNUM 주기 - PARTITION BY (1) | 2014.07.17 |
---|---|
[오라클|Oracle] 위(이전)/아래(이후) Row의 값 가져오기 - LAG, LEAD (0) | 2014.07.16 |
Oracle to MSSQL 쿼리 변환 시 검토할 점 (1) | 2014.07.11 |
[오라클|Oracle] 테이블끼리 조인 걸기 - INNER JOIN, LEFT OUTER JOIN (1) | 2014.07.04 |
[오라클|Oracle] String 원하는 만큼 자르기 – SUBSTR (0) | 2014.07.02 |