부서명 | 부서코드 |
총무부 | A1 |
경리부 | B1 |
영업부 | C1 |
… | … |
A 테이블
사원번호 | 부서명 | … |
1 | 총무부 | |
2 | 경리부 | |
3 | 총무부 | |
4 | 영업부 | |
5 | 경리부 | |
6 | 총무부 | |
7 | 경리부 | |
8 | 영업부 | |
9 | 총무부 | |
10 | 경리부 | |
… |
B테이블
헷갈려서 질문드립니다.
하고자 하는것은 B테이블의 부서명 컬럼이 부서코드로 변경될 예정입니다.
때문에 B테이블의 부서명을 A테이블을 참조해서 부서코드로 일괄 변경하려 합니다.
A와 B테이블의 부서명 관계가 1:N인 관계로 GROUP BY로 해서 중복을 제거하고 조인한 다음 UPDATE하면 되리라 생각했는데;
UPDATE B SET (B.부서명) = (SELECT A.부서코드 FROM A WHERE A.부서명 = B.부서명 GROUP BY A.부서명) WHERE EXISTS ( SELECT 'x' FROM A WHERE A.부서명 = B.부서명 GROUP BY A.부서명 )
-->ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.
라고 리턴이 되어서요
조인한 다음 GROUP BY 해서 하나의 부서명에 대해 부서코드는 중복되지 않으리라 생각했는데..
코드를 계속 들여다 보고 있습니다만 잘 모르겠습니다.
GROUP BY를 다른데 써줘야 할까요?
오라클 11g입니다