매일 1%씩, 개발자로 성장하기

[MySQL] 값이 있으면 Update, 값이 없으면 Insert 하는 방법 ON DUPLICATE KEY UPDATE 본문

Database/MySQL

[MySQL] 값이 있으면 Update, 값이 없으면 Insert 하는 방법 ON DUPLICATE KEY UPDATE

할미개발 2022. 6. 7. 20:53
728x90

작업을 하다보면 결과 값에 따라 새로운 값을 Insert해야 할 때도 있고

기존 값을 새로운 값으로 Update를 해줘야 할 경우가 있다.

 

이럴 때 사용할 수 있는 MySQL 구문으로 ON DUPLICATE KEY UPDATE가 있다. 

즉, Insert 구문과 Update 구문을 같이 사용할 수 있다.

 

이 구문을 사용 할 때는 컬럼에  UNIQUE 혹은 PRIMARY KEY 값, 즉 unique 제약조건을 가지고 있어야한다.

INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE b=3,c=1;

t1 테이블에서 1이라는 값을 a가 가지고 있다면 b=3, c = 1로 업데이트 하고
a의 값에 1이 없을 경우 a=1,b=2, c=3을 삽입한다. (여기서 a의 제약조건으로 pk 설정되었다고 가정함)

 

결론 : 중복 항목이 발생하는 경우 기존 행을 Update 중복 항목이 없을 경우 Insert 

 

 

 

관련 링크 : https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

728x90
Comments