UPDATE 관련입니다. 0 1 3,554

by 배기염 [SQL Query] update merge 업데이트 [2014.01.27 18:14:53]


A 테이블의 내용을 바꾸려고 합니다.

A 테이블에는 P1, M1 컬럼이 있고 PK는 P1입니다. 기준정보 테이블이구요.
A 테이블의 P1, M1컬럼의 내용을 바꾸려고 합니다.

엑셀파일에 P1, P2, M1, M2 내용이 들어있구요.
P1은 P2로 M1은 M2로 바꾸려고 합니다.

그래서 P1, P2, M1, M2를 가진 B라는 임시 테이블을 만들었고

A테이블과 B테이블을 조인하여 일치하는 A.P1을 B.P2로 바꾸려고 합니다..

ex. A('ABCD', 'ZZZ'), B('ABCD', 'AABBCCDD', 'ZZZ', 'ZAZBZC')
     조인하여 변경하여 A('ABCD', 'ZZZ') 대신에 A('AABBCCDD', 'ZAZBZC')로 업데이트 하는 것입니다.

update A a
     set (p1, m1) = (select p2, m2
                               from A a, B b
    where a.m1 = b.m1); 이런식으로 했는데 데이터가 안 맞는지 에러가 나더군요.
어디서 겹치나 찾아보고는 있는데 일단 이렇게 써도 가능한건가요?
by 마농 [2014.01.27 18:58:42]
-- 1. 서브쿼리 From절에 a 가 있으면 안됩니다. 메인의 a 를 서브에서 사용하는 것입니다.
-- 2. 조건절이 없으면 전체 업데이트입니다. 조건절을 줘야만 조건에 만족하는 자료만 갱신됩니다.
UPDATE A a
   SET (p1, m1) = (SELECT p2, m2 FROM B b WHERE b.m1 = a.m1)
 WHERE EXISTS (SELECT 1 FROM B b WHERE b.m1 = a.m1)
;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입