중복 키에 대한 INSERT...에 대한 조건부 업데이트
중복 키 조건을 기반으로 레코드를 삽입하거나 업데이트하는 것은 데이터베이스 프로그래밍의 일반적인 시나리오입니다. . 그러나 경우에 따라 업데이트 조건을 추가로 제한하여 추가 기준에 따라야 할 수도 있습니다. 불행하게도 INSERT ... ON DUPLICATE KEY UPDATE 구문은 기본적으로 조건부 업데이트에 대한 WHERE 절을 지원하지 않습니다.
제한 극복
이 제한을 해결하려면 UPDATE 절 내에서 IF() 함수를 활용할 수 있습니다. IF() 함수를 사용하면 주어진 논리 표현식을 기반으로 대체 값을 지정할 수 있습니다.
구현 예
다음 INSERT ... ON DUPLICATE KEY UPDATE를 고려하세요. 쿼리:
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);
이 쿼리에서 UPDATE 절에는 기존 last_event_created_at 값이 삽입되는 값보다 작은지 확인하는 IF() 문이 포함되어 있습니다. 기존 값이 오래된 경우 업데이트가 수행되어 last_event_id가 새 값으로 대체됩니다. 그렇지 않으면 기존 last_event_id가 유지됩니다.
추가 고려 사항
위 내용은 SQL에서 INSERT ... ON DUPLICATE KEY를 사용하여 조건부 업데이트를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!