중복 데이터를 merge 할 수 있을까요? 0 3 2,926

by 이규창 머지 merge 중복 [2016.07.28 13:47:43]


insert 하고자 하는 테이블 


CREATE TABLE TMP_TABLE (
    F1  VARCHAR2(20) PRIMARY KEY,
    F2  VARCHAR2(20),
    F3  VARCHAR2(20)
)

 

merge query


MERGE INTO TMP_TABLE A USING (
    SELECT * FROM (
        SELECT 1 SEQ, '0000000001' F1, 'TEST_NAME1' F2, 'TEST_VALUE1'F3 FROM DUAL UNION ALL
        SELECT 2 SEQ, '0000000001' F1, 'TEST_NAME1' F2, 'TEST_VALUE1'F3 FROM DUAL UNION ALL
        SELECT 3 SEQ, '0000000002' F1, 'TEST_NAME2' F2, 'TEST_VALUE2'F3 FROM DUAL
    )
    ORDER BY SEQ
) B ON (A.F1 = B.F1)
WHEN MATCHED THEN
UPDATE SET
    F2 = B.F2,
    F3 = B.F3
WHEN NOT MATCHED THEN
INSERT (
    F1,
    F2,
    F3
)
VALUES (
    B.F1,
    B.F2,
    B.F3
)

 

 

using 절안의 내용은 실제 테이블이나 편의상 쿼리로 구성했습니다.

상기 merge 가 정상적으로 처리 될수 있도록 할 수 있을까요?

현재는 동일 데이터가 2건이 나오기 때문에 제약조건에 걸려 등록/수정이 되지 않는 상태입니다.

 

 

 

 

by 우리집아찌 [2016.07.28 13:53:23]

안됩니다.   insert , update 구분하셔서 따로하셔야할겁니다.


by 마농 [2016.07.28 13:56:16]

USING 절 안에서 미리 중복을 제거하세요.


by 이규창 [2016.07.28 14:04:09]

역시 다른 방법은 없나보네요

중복을 제거할 수는 있으나 혹시 다른 방법이 있을까해서 문의 했습니다.

답변 감사합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입