챗선생이 쉽게 알려주는 merge into

민코·2024년 7월 15일

이 예시에서는 집 앞 공원의 두 가지 공지사항을 비교하고, 필요할 때 업데이트하거나 추가하는 상황을 생각해보겠습니다.

예시 설명

1. 공원 공지사항 표

  • 이웃 공원 A: 현재 공지사항이 있습니다.
  • 이웃 공원 B: 새로운 공지사항이 있습니다.

2. 목표

  • 이웃 공원 A의 공지사항을 최신으로 유지하고자 합니다.
  • 이웃 공원 B의 새로운 공지사항을 필요할 때마다 이웃 공원 A에 추가하거나 업데이트하려고 합니다.

3. 비교와 병합 과정

  • 이웃 공원 A: "오늘은 청소의 날입니다."
  • 이웃 공원 B: "내일은 체육대회가 있습니다."

이 때, "Merge into"은 다음과 같이 작동합니다:

  • 공원 공지사항 비교: 이웃 공원 A와 이웃 공원 B의 공지사항을 비교합니다.
  • 업데이트: 이웃 공원 B의 새로운 공지사항을 이웃 공원 A에 추가하거나 업데이트합니다.

SQL 구문 설명

-- 이웃 공원 A의 공지사항을 기준으로 이웃 공원 B의 데이터를 병합합니다.
MERGE INTO 이웃_공원_A AS A
USING 이웃_공원_B AS B
-- 조건: 두 공지사항의 내용이 같으면 같은 것으로 간주합니다.
ON A.id = B.id
-- 일치하는 경우 (이미 있는 공지사항을 찾은 경우) 해당 공지사항을 업데이트합니다.
WHEN MATCHED THEN
    UPDATE SET A.content = B.content
-- 일치하지 않는 경우 (이웃 공원 A에 없는 새로운 공지사항을 찾은 경우) 새로운 공지사항을 추가합니다.
WHEN NOT MATCHED THEN
    INSERT (id, content)
    VALUES (B.id, B.content);

각 부분 설명

  • MERGE INTO 이웃_공원_A AS A: 이웃 공원 A를 기준으로 공지사항을 병합합니다.
  • USING 이웃_공원_B AS B: 병합할 데이터는 이웃 공원 B의 공지사항입니다.
  • ON A.id = B.id: 두 공지사항의 고유한 식별자(id)가 같은 경우를 찾습니다.
  • WHEN MATCHED THEN: 공지사항이 이미 있는 경우에 해당합니다.
    • UPDATE SET A.content = B.content: 이웃 공원 A의 공지사항을 이웃 공원 B의 새로운 공지사항으로 업데이트합니다.
  • WHEN NOT MATCHED THEN: 이웃 공원 A에 없는 새로운 공지사항을 찾습니다.
    • INSERT (id, content) VALUES (B.id, B.content): 이웃 공원 A에 새로운 공지사항을 추가합니다.

결과

  • 이웃 공원 A에는 "오늘은 청소의 날입니다."와 "내일은 체육대회가 있습니다."라는 두 가지 공지사항이 있게 됩니다.

이렇게 "Merge into" 구문은 두 공지사항을 비교하여 필요한 경우 업데이트하거나 추가하는 간단한 방법을 제공합니다.

i love you
챗선생

profile
🎮 studyplay.kr 운영 중

0개의 댓글