- 보통 데이터를 처리할떄 데이터의 존재 여부를 확인(SELECT) 하고 해당 값이 없으면 삽입(INSERT) 하고 있으면 업데이트(UPDATE)를 하게 된다.
MERGE INTO [TABLE / VIEW] -- UPDATE 또는 INSERT 할 테이블 혹은 뷰
USING[TABLE / VIEW / DUAL] -- 비교할 대상 테이블 혹은 뷰(위 테이블과 동일할 경우 DUAL을 사용)
ON [조건] -- UPDATE 와 INSERT 처리할 조건문(조건이 일치하면 UPDATE / 불일치 시 INSERT)
WHEN MATCHED THEN -- 일치하는 경우
UPDATE SET
[COLUMN1] = [VALUE1],
[COLUMN2] = [VALUE2],
...
(DELETE [TABLE] WHERE [COLUMN 1] = [VALUE 1] AND ...) -- UPDATE 뿐만 아니라 DELETE 구문도 가능
WHEN NOT MATCHED THEN -- 일치하지 않는 경우
INSERT(COLUMN1,COLUMN2, ...)
VALUES (VALUE1, VALUE2, ...)
- MERGE INTO : INSERT 또는 UPDATE 할 테이브로가 테이블의 ALIAS 지정합니다.
- USING : 원하는 결과를 추출하기 위한 SELECT 문을 작성합니다.
- 이 SELECT 분에서 나온 결과를 INSERT 또는 UPDATE 할 예정입니다.
- ON : SELECT 한 결과와 입력하고 싶은 테이블의 UNIQUE한 값을 매칭하는 연결고리입니다.(주로 KEY 값을 사용)
- WHEN MATCHED THEN : SELECT의 결과가 INSERT할 테이블에 값이 이미 존재하는 경우 UPDATE를 실행합니다.
- WHEN NOT MATCHED THEN : SELECT의 결과가 INSERT할 테이블에 값이 없는 경우 INSERT를 실행합니다.
주의
- ON 조건절에 사용할 컬럼을 업데이트하면 오류가 발생합니다.
- SQL 오류: ORA-38104: ON 절에서 참조되는 열은 업데이트할 수 없음: "A"."JOB"
38104. 00000 - "Columns referenced in the ON Clause cannot be updated: %s"
출처
https://dreamcoding.tistory.com/94
'DB > 오라클' 카테고리의 다른 글
[Oracle] 오라클 WITH 절 사용법 및 동작 방식 (0) | 2024.10.13 |
---|---|
[Oracle] 조건에 맞는 사용자 정보 조회하기 (0) | 2024.09.23 |
[Oracle] SQL 서브쿼리 SELECT,FROM,WHERE (0) | 2024.09.23 |
[Oracle] 문자열 합치는 방법(||, CONCAT()) (0) | 2024.09.23 |
[ORACLE] INSTR() 함수: 문자 찾기 (0) | 2024.09.09 |