본문 바로가기
Big Data/Database

SELECT -> INSERT

by Wikinist 2023. 8. 15.

 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