반응형
* 머지도 진짜 안 쓰고 싶은데, 필요할 때가 있다.
* MERGE문의 다양한 형태를 알아보자.
1. MERGE문 기본 형태
MERGE
INTO 테이블 or 뷰
USING 테이블 or 뷰 or 서브쿼리 or DUAL
ON join조건 or MATCH조건
-- TABLE명 제외(INTO 테이블 적용)
-- ON에서 쓴 조건은 UPDATE 불가
WHEN MATCHED THEN
일치 SQL
WHEN NOT MATCHED THEN
불일치 SQL
2. MERGE문 단일 테이블 ( DUAL )
MERGE
INTO TABLE_A A
USING DUAL -- 위 테이블과 같은 테이블 사용
ON ( COL1 = '2021' )
WHEN MATCHED THEN
UPDATE -- 테이블명 넣지 않음.
SET A.COL2 = '올해'
WHEN NOT MATCHED THEN
INSERT (A.COL1, A.COL2) -- 테이블명 넣지 않음
VALUES ('2021', '신년')
;
3. MERGE문 JOIN 사용
MERGE
INTO TABLE_A A
USING TABLE_B B
, (SELECT COL1 FROM TABLE_C) C
ON ( A.COL1 = B.COL1 -- join조건
AND A.COL1 = C.COL1 -- join 조건
AND A.COL1 = '2021' -- match 조건
)
WHEN MATCHED THEN
UPDATE -- 테이블명 넣지 않음.
SET A.COL2 = '올해'
WHEN NOT MATCHED THEN
INSERT (A.COL1, A.COL2) -- 테이블명 넣지 않음
VALUES ('2021', '신년')
;
* 10g 부터는 DELETE문과 WHERE절(INSERT 제외) 사용도 가능해졌다.
그리드형
'IT > DB' 카테고리의 다른 글
[ORACLE] 오라클 LPAD, RPAD, TRIM, LTRIM, RTRIM (자리 수 채우기/지우기) (0) | 2021.10.26 |
---|---|
[ORACLE] 알아두면 유용한 오라클 딕셔너리 (Oracle Dictionary) (0) | 2021.09.30 |
[ORACLE] 프로시저(Procedure) 생성 및 실행과 작성 문법 (PL/SQL) (0) | 2021.09.28 |
[ORACLE] 오라클 ROUND, TRUNC (소수점 반올림, 버림) (0) | 2021.09.10 |
[ORACLE] 오라클 ORA-01489 에러 LISTAGG 길이 초과 시 해결 방법 (0) | 2021.08.20 |
댓글