본문 바로가기

오라클/테이블

테이블 병합

-- MERGE : 병합

병합을 확인하기  위한 테이블 작성

CREATE TABLE test1(

  id NUMBER PRIMARY KEY

  ,name VARCHAR2(20)

  ,pay NUMBER

  ,sudang NUMBER

);


CREATE TABLE test2(

  id NUMBER PRIMARY KEY

  ,sudang NUMBER

);


INSERT INTO test1(id,name,pay,sudang) VALUES(1,'a',100,10);

INSERT INTO test1(id,name,pay,sudang) VALUES(2,'b',200,20);

INSERT INTO test1(id,name,pay,sudang) VALUES(3,'c',300,30);


INSERT INTO test2(id,sudang) VALUES(2,5);

INSERT INTO test2(id,sudang) VALUES(3,15);

INSERT INTO test2(id,sudang) VALUES(4,20);


COMMIT;


SELECT * FROM test1;

SELECT * FROM test2;


MERGE INTO test2 s                                   --병합할 테이블 (s는 test2 테이블에 s라는 별명을 붙여준것)

  USING (SELECT id, sudang FROM test1) t   --병합시킬 자료( 또는 테이블)

  ON(s.id=t.id)                                             -- 병합 조건

  WHEN MATCHED THEN                              -- 병합조건에 만족하는 경우

    UPDATE SET s.sudang=s.sudang+t.sudang

  WHEN NOT MATCHED THEN                       -- 병합조건에 만족하지 않는 경우

    INSERT (s.id, s.sudang) VALUES(t.id, t.sudang);


SELECT * FROM test1;

SELECT * FROM test2;


DROP TABLE test1 PURGE;

DROP TABLE test2 PURGE;