-- 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;
'오라클 > 테이블' 카테고리의 다른 글
서브쿼리를 이용한 여러개의 행에 데이터 추가하기 (0) | 2013.06.01 |
---|---|
테이블에 데이터 추가 (0) | 2013.06.01 |
테이블 삭제 (0) | 2013.06.01 |
테이블 복사하여 새로운 테이블 작성하기 (0) | 2013.06.01 |
테이블에 컬럼 추가,컬럼폭 및 타입변경,컬럼이름수정,컬럼삭제 (0) | 2013.06.01 |