Database

[Oracle] Merge문

Lcoding 2024. 11. 27. 21:26
반응형

안녕하세요 오늘은 Oracle의 Merge Into문에 대해서 알아보겠습니다.

 

흔히 특정 조건에 맞는 A테이블의 데이터를 B테이블로 update 한다거나, 

아니면 데이터가 입력됬을때 특정 조건에 맞으면 update 아니면 insert 하는 식으로 구현할 수 있는 SQL입니다.

 

예제 상황

  • A 테이블: A(id, name, age)
  • B 테이블: B(id, name, age)
  • 두 테이블의 id가 공통 키.
MERGE INTO B
USING A
ON (A.id = B.id)
WHEN MATCHED THEN
    UPDATE SET
        B.name = A.name,
        B.age = A.age
WHEN NOT MATCHED THEN
    INSERT (B.id, B.name, B.age)
    VALUES (A.id, A.name, A.age);

 

  1. USING A:
    • MERGE 문에서 기준 데이터를 제공할 테이블입니다. 여기서는 A 테이블이 기준입니다.
  2. ON (A.id = B.id):
    • A.id와 B.id가 일치하는지 확인합니다.
  3. WHEN MATCHED THEN:
    • 조건이 성립하는 경우(즉, A.id = B.id인 경우) UPDATE를 수행합니다.
    • B.name과 B.age를 A.name과 A.age로 업데이트합니다.
  4. WHEN NOT MATCHED THEN:
    • 조건이 성립하지 않는 경우(즉, A.id가 B.id에 없는 경우) INSERT를 수행합니다.
    • A의 데이터를 B에 삽입합니다. 

- 추가 사항 -

  • MERGE 은 데이터가 존재하면 업데이트하고, 필요에 따라 데이터를 삽입하거나 삭제할 수도 있습니다.
  • USING 절의 ON부분에서 조건을 정의합니다.

 

결과적으로 다음과 같이 테이블의 내용이 변화됩니다.

 

감사합니다.

반응형