MERGE문은 조건이 있을때 수행하고, 없어도 수행하게 만드는 쿼리문입니다.
UPDATE와 INSERT를 한번에 쓰거나 필요로 할 때 사용합니다.
MERGE문 예제입니다.
MERGE INTO TABLE A
USING DUAL
ON (A.컬럼 = 값1)
WHEN MATCHED THEN
UPDATE
SET A.컬럼2 = 값2
, A.컬럼3 = 값3
WHEN NOT MATCHED THEN
INSERT
( A.컬럼
, A.컬럼2
, A.컬럼3
)
VALUES
( 값1
, 값2
, 값3
)
;
위처럼 사용하시면 됩니다.
부가설명을 드리자면
TABLE A에 위 조건에 맞는 데이터가 있으면 MATCHED가 성사되기에 UPDATE문이 적용되고,
위 조건에 맞는 데이터가 없으면 NOT MATCHED가 되어 INSERT문이 적용됩니다.
※주의사항※
1. ORA-00969: ON 키워드가 없습니다.
2. UPDATE문에 ON 조건을 변경할 수 없습니다.
1. 해결방안
MERGE INTO TABLE A
USING DUAL
ON A.컬럼 = 값1
WHEN ~
이렇게 작성한 쿼리를
MERGE INTO TABLE A
USING DUAL
ON (A.컬럼 = 값1)
WHEN ~
ON 오른쪽 조건부 문장들을 괄호로 묶으면 해결됩니다.
2. 해결방안
MERGE INTO TABLE A
USING DUAL
ON (A.컬럼 = 값1)
WHEN MATCHED THEN
UPDATE
SET A.컬럼 = 값1
, A.컬럼2 = 값2
, A.컬럼3 = 값3
~
로 작성을 했다면
MERGE INTO TABLE A
USING DUAL
ON (A.컬럼 = 값1)
WHEN MATCHED THEN
UPDATE
SET A.컬럼2 = 값2
, A.컬럼3 = 값3
~
위 처럼 ON절 컬럼을 UPDATE문에서 제외시키면 됩니다.
'Web Programming > DB' 카테고리의 다른 글
[ORACLE/오라클] EXISTS, NOT EXISTS, 조건절 서브쿼리 성능(속도) 개선 (0) | 2023.06.14 |
---|---|
[ORACLE, DB] OWNER, TABLE명, COLUMN명, TABLE COMMENT, COLUMN COMMENT 조회하기(오너명, 테이블명, 컬럼명, 테이블주석, 컬럼주석 조회) (2) | 2023.04.25 |
[ANSI SQL] JOIN 쿼리, 이해 쉬운 예제 (5) | 2023.02.16 |
[ORACLE] LATERAL 조인 함수 / OUTER APPLY 조인 함수 (0) | 2023.02.15 |
[ORACLE] JSON 파싱(Parsing)하기 (조회하기) (0) | 2023.02.14 |