Database/SQL Tuning
[Merge] Update 컬럼은 On 절에 사용 할수 없을 때
denodo
2015. 8. 24. 15:05
merge 문을 사용 할 때
on절에 온 Unique 컬럼을 update 인자로 쓸 수 없다.
하지만 그 unique 컬럼을 merge 문으로 사용하기 위해 아래와 같이
rowid 로 join을 걸어 해당 unique 컬럼을 update 로 사용 할 수 있다.
SELECT e.empno, e.ename
FROM emp e INNER JOIN dept d ON e.deptno = d.deptno
SELECT a.empno, a.ename
FROM emp a,
(SELECT b.*, aa.ROWID rid
FROM dept b, emp aa
WHERE b.deptno = aa.deptno(+)) c
WHERE a.ROWID = c.rid
아 참고로 Merge 문의 on 절에 오는 a.coulmn = b.column 들은
unique 값이 어야 한다.
unique 값이 아니라면 distinct 나 group by 하여 1:1 매칭이 되게 하여야 merge 문 에러가 나지 않는다.