본문 바로가기
IT_Developers/MySQL

MySQL - "ON DUPLICATE KEY UPDATE" 중복 데이터 업데이트

by 고코더 2021. 10. 31.

안녕하세요.

고코더 입니다.

 

 

MySQL은 편리한 기능이 많습니다. 그중에서도 잦은 데이터를 입력할 때 중복된 값이 있을 시에 오류를 발생시키지 않고, 동일한 데이터라면 필요한 컬럼만 업데이트가 가능합니다. 좀 더 쉽게 말하면 "동일한 데이터가 있을시 업데이트"를 시킬 수 있는 명령어가 있습니다.

 

1. 예를 한번 들어보겠습니다. table이라는 테이블에  PRIMARY KEY가 "name", "gender"에 걸려 있다고 생각합니다. 이를 쉽게 설명하면 name, gender가 같은 데이터는 존재할 수 없습니다. 만약 그런 데이터를 그냥 입력한다면 오류가 발생합니다. 하지만 ON DUPLICATE KEY UPDATE를 설정하면 다릅니다. 만약 같은 데이터가 있다면 이 SQL은 업데이트 문처럼 실행되고 PK가 아닌 age라는 값만 업데이트됩니다. 

INSERT INTO table (
  name, 
  gender,
  age, 

)
VALUES (
  'gocoder', 
  'm'
  '30', 
    
) 
ON DUPLICATE KEY UPDATE 
  age = '20',

 

2.  위에 실행된 쿼리는 이미 존재한다면 이렇게 SQL 쿼리가 변경되어 실행됩니다. insert이지만 실제 실행되는 건 나이만 업데이트가 됩니다. 

Update table 
	set age = '20'
where name = 'gocoder' 
	and gender = 'm'

 

실무에서 정말 유용한 옵션이니 한번 곰곰이 생각해보고 익혀둡시다.

댓글