티스토리 뷰
1. MERGE - 역할
테이블에 데이터를 삽입하거나 수정하거나 삭제할 때 INSERT,UPDATE,DELETE 문을 조건에 따라 한 문장으로 해주는 것
◈ 구문형식
MERGE INTO 테이블명 USING SELECT문
ON 조건
WHEN MATCHED THEN
UPDATE 나 DELETE 구문
WHEN NOT MATCHED THEN
INSERT 구문
[WHERE 절]
2. MERGE - 기본 테이블
◈ TEST_TABLE_ONE
IDX | ID | NAME | AMT |
1 | test1 | 테스트1 | 1000 |
2 | test2 | 테스트2 | 2000 |
3 | test3 | 테스트3 | 3000 |
◈ TEST_TABLE_TWO
IDX | ID | NAME | AMT |
1 | test3 | 테스트3 | 7000 |
2 | test4 | 테스트5 | 5000 |
3 | test6 | 테스트6 | 6000 |
3. MERGE - SQL 문장
◈ SQL 문장
1 2 3 4 5 6 7 | MERGE INTO TEST_TABLE_ONE A USING (SELECT * FROM TEST_TABLE_ONE) B ON (A.ID=B.ID) WHEN MATCHED THEN UPDATE SET AMT = B.AMT WHEN NOT MATCHED THEN INSERT VALUES (B.IDX,B.ID,B.NAME,B.AMT) |
◈ 결과 테이블
ID | NAME | AMT |
test1 | 테스트1 | 1000 |
test2 | 테스트2 | 2000 |
test3 | 테스트3 | 7000 |
test4 | 테스트4 | 4000 |
test5 | 테스트5 | 5000 |
◈ 설명
두개의 테이블을 비교해 보면 일단 테이블 1,2 에 일치하는 ID는 test3 입니다.
그래서 일치하는 ID가 있는 test3은 3000 으로 AMT가 업데이트 되었습니다.
그리고 일치하지 않는 ID인 test4,test5는 INSERT를 하였음으로 위와 같은 결과가 나오게 됩니다.
'[개발]프로그래밍 > sql' 카테고리의 다른 글
[oracle] CREATE TABLE AS SELECT - 테이블 복사 (0) | 2019.11.26 |
---|---|
[oracle] CREATE TABLE - 테이블 생성 (0) | 2019.11.25 |
[oracle] DELETE - 테이블 내에 데이터 삭제 (0) | 2019.11.18 |
[oracle] UPDATE - 테이블 내의 컬럼 값 변경 (0) | 2019.11.18 |
[oracle] INSERT - 한 행 ,여러 행 삽입(SELECT 이용) (0) | 2019.11.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday