본문 바로가기
Database

[Oracle] Merge문

by Lcoding 2024. 11. 27.
반응형

안녕하세요 오늘은 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부분에서 조건을 정의합니다.

 

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

 

감사합니다.

반응형

loading