"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > SQL에서 INSERT ... ON DUPLICATE KEY를 사용하여 조건부 업데이트를 구현하는 방법은 무엇입니까?

SQL에서 INSERT ... ON DUPLICATE KEY를 사용하여 조건부 업데이트를 구현하는 방법은 무엇입니까?

2025-01-09에 게시됨
검색:802

How to Implement Conditional Updates with INSERT ... ON DUPLICATE KEY in SQL?

중복 키에 대한 삽입...에 대한 조건부 업데이트

중복 키 조건을 기반으로 레코드를 삽입하거나 업데이트하는 것은 데이터베이스 프로그래밍의 일반적인 시나리오입니다. . 그러나 경우에 따라 업데이트 조건을 추가로 제한하여 추가 기준에 따라야 할 수도 있습니다. 안타깝게도 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 값이 값이 삽입되는 중입니다. 기존 값이 오래된 경우 업데이트가 수행되어 last_event_id가 새 값으로 대체됩니다. 그렇지 않으면 기존 last_event_id가 유지됩니다.

추가 고려 사항

  • 조건이 false인 경우 IF()가 NULL로 평가된다는 점을 기억하세요. 따라서 조건이 충족되지 않으면 last_event_id의 업데이트된 값도 NULL이 됩니다.
  • 원하는 업데이트 필터링을 보장하려면 추가 WHERE 절을 사용하거나 별도의 UPDATE 쿼리를 사용하는 것이 좋습니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3