MySQL 데이터베이스에서 INSERT INTO ... ON DUPLICATE KEY UPDATE 문을 사용하는 방법에 대해 설명합니다. 이러한 문법은 새로운 데이터를 삽입하려고 할 때 이미 기존에 존재하는 행과 충돌이 발생할 경우 업데이트를 수행하는 데 유용합니다.
문법 및 기능 설명
아래는 주어진 source_table에서 데이터를 선택하여 target_table에 삽입하거나 업데이트하는 SQL 쿼리의 구문과 기능에 대한 설명입니다.
INSERT INTO target_table (id, value1, value2, value3)
SELECT id, value1, value2, value3
FROM source_table AS source
ON DUPLICATE KEY UPDATE
value1 = source.value1,
value2 = source.value2,
value3 = source.value3;
INSERT INTO target_table: target_table에 데이터를 삽입합니다.
(id, value1, value2, value3): 삽입될 열의 목록을 지정합니다. id, value1, value2, value3 열에 대응하는 값을 삽입할 것입니다.
SELECT id, value1, value2, value3 FROM source_table AS source: source_table에서 데이터를 선택하여 삽입할 값을 추출합니다. source_table은 AS source로 별칭을 지정하여 사용합니다.
ON DUPLICATE KEY UPDATE: 만약 삽입하려는 행의 id 값이 이미 기존 target_table의 행과 충돌할 경우, 업데이트를 수행합니다.
value1 = source.value1, value2 = source.value2, value3 = source.value3: 충돌이 발생한 경우 업데이트할 값을 지정합니다. source 테이블의 각 열 값을 target_table의 해당 열에 업데이트합니다.
동작 방식
source_table에서 데이터를 선택하여 target_table에 삽입하려고 합니다.
만약 target_table에 삽입하려는 행의 id 값이 이미 존재한다면, 충돌이 발생합니다.
충돌이 발생한 경우, ON DUPLICATE KEY UPDATE 절에 의해 이미 존재하는 행의 값을 source_table에서 선택한 값으로 업데이트합니다.
해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.
'Big Data > Database' 카테고리의 다른 글
[SQL] LIKE (0) | 2023.09.26 |
---|---|
MySQL UPDATE 쿼리를 이용한 특정 필드 값의 개행 문자와 캐리지 리턴 제거 (0) | 2023.08.19 |
REGEXP (0) | 2023.08.04 |
CASE WHEN (0) | 2023.08.04 |
MySQL에 csv 파일 데이터 적재 (0) | 2023.08.02 |