본문 바로가기
SQL/MySQL

MySQL ON DUPLICATE KEY(MERGE INTO) 사용방법

by wakestand 2021. 1. 8.
반응형

MySQL에서는 ON DUPLICATE KEY의 기능은

INSERT 시 Key 컬럼에 동일한 값이 존재하면

해당 Key에 해당하는 ROW에 INSERT가 아닌 UPDATE가 돌아가게 된다

 

오라클에서는 MERGE INTO라고 하면

어느정도 느낌이 올 것이다

 

오라클 MERGE INTO 사용법 & 예제

MERGE INTO는 하나의 테이블 혹은 두 테이블을 가지고 비교해본 뒤에 조건에 맞으면 UPDATE, DELETE를 수행하고 맞지 않으면 INSERT를 수행하게 된다 위 테이블을 사용한 예제를 보자면 아래와 같다 MERGE

wakestand.tistory.com

이걸 사용해주려면 먼저 테이블에

Key를 지정해준 뒤 쿼리문을 작성해주면 되는데

MySQL Key 지정방법은 아래를 참고하고

 

MySQL 테이블 제약조건 조회 추가 삭제 변경방법 정리

MySQL에서 제약조건은 DESC 스키마명.테이블명; 으로 조회가 가능한데 여기서 제약조건 추가 및 변경방법은 다음과 같다 -- PK ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 PRIMARY KEY(NAME); -- FK ALTER..

wakestand.tistory.com

쿼리는 다음과 같이 작성한다

INSERT INTO TB1(컬럼명) values (값)
ON DUPLICATE KEY -- PK 컬럼명에 중복이 들어올 시 
UPDATE 컬럼명 = 값; -- 중복 컬럼의 ROW를 UPDATE

 

쿼리를 두번 수행해본 뒤 결과를 보면

첫 INSERT 시에는 테이블에 아무 내용이 없어서

'철수', 20이 들어갔지만

 

두번째 INSERT 시에는 철수라는 Key가 이미 존재하기 때문에

NAME이 '철수'인 ROW의 NAME이 중복, AGE가 99로 변경된 것이 보인다

 

마지막으로 예제에 사용한 쿼리는 아래와 같다

 

INSERT INTO TB1(NAME, AGE) values ('철수', 20)
ON DUPLICATE KEY
UPDATE NAME = '중복', AGE = 99;

SELECT * FROM TB1; -- 조회용
반응형

댓글