>데이터 베이스 >MySQL 튜토리얼 >중복 키 업데이트 문에서 INSERT...에서 조건부 업데이트를 수행하는 방법은 무엇입니까?

중복 키 업데이트 문에서 INSERT...에서 조건부 업데이트를 수행하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-30 22:46:29426검색

How to Perform Conditional Updates in INSERT ... ON DUPLICATE KEY UPDATE Statements?

INSERT ... ON DUPLICATE KEY UPDATE: 조건부 업데이트

INSERT ... ON DUPLICATE KEY UPDATE 작업을 수행할 때, 특정 조건에 따라 조건부로 업데이트를 실행해야 하는 경우가 있습니다. 그러나 이 문의 UPDATE 부분에는 WHERE 절을 사용할 수 없습니다.

IF()를 사용한 해결 방법

조건부 업데이트를 수행하려면 다음을 활용하는 것이 좋습니다. IF() 함수. IF() 표현식 내에서 조건을 평가하면 결과에 따라 업데이트된 열에 대해 다른 값을 지정할 수 있습니다.

다음 표를 고려하세요.

CREATE TABLE daily_events (
  created_on DATE,
  last_event_id INT,
  last_event_created_at DATETIME
);

last_event_created_at 열이 변경된 경우에만 last_event_id 열을 조건부로 업데이트하려면 다음 쿼리를 사용할 수 있습니다.

INSERT INTO daily_events (created_on, last_event_id, last_event_created_at)
  VALUES ('2010-01-19', 23, '2010-01-19 10:23:11')
ON DUPLICATE KEY UPDATE
  last_event_id = IF(last_event_created_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);

이 쿼리에서 IF() 함수는 다음을 확인합니다. 데이터베이스의 last_event_created_at 값이 삽입되는 값보다 작습니다. true인 경우 last_event_id가 삽입된 값으로 업데이트됩니다. 그렇지 않으면 기존 값이 유지됩니다.

복제 호환성

이 접근 방식은 데이터베이스 스키마에 대한 추가 쿼리나 수정이 필요하지 않으므로 복제와 호환됩니다.

위 내용은 중복 키 업데이트 문에서 INSERT...에서 조건부 업데이트를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.