본문 바로가기

STUDY/DATABASE

MySQL | 조건부 UPDATE ( IF / CASE )

UPDATE를 할 때 WHERE절 외에 조건을 주어 수정되도록 합니다.

UPDATE 테이블명
SET 컬럼명 = CASE WHEN 조건 THEN (조건부합O)변경할 값 ELSE (조건부합X)변경할 값 END
WHERE 조건

 

예시

host_user나 participant_user가 'abc'라면 null로 업데이트하고, 아닐 경우 값은 유지되도록 함

UPDATE CHAT_ROOMS
SET HOST_USER = CASE HOST_USER='abc' THEN NULL ELSE HOST_USER END,
 PARTICIPANT_USER = CASE PARTICIPANT_USER='abc' THEN NULL ELSE PARTICIPANT_USER END
WHERE CHAT_ROOM_ID = 2;

 

 

+) 참고 CASE문 문법

 

MySQL :: MySQL 5.7 Reference Manual :: 13.6.5.1 CASE Statement

CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE Or: CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE T

dev.mysql.com