>데이터 베이스 >MySQL 튜토리얼 >MySQL은 INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 구문을 어떻게 처리합니까?

MySQL은 INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 구문을 어떻게 처리합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-06 06:59:11651검색

How Does MySQL Handle INSERT ... SELECT ... ON DUPLICATE KEY UPDATE Syntax?

INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 구문 설명

일부 열이 이미 존재할 수 있는 INSERT 쿼리를 수행하는 경우 대상 테이블에는 ON DUPLICATE KEY UPDATE 절을 사용할 수 있습니다. 이 절을 사용하면 업데이트 기준과 업데이트할 값을 지정할 수 있습니다.

이러한 쿼리에서 UPDATE 절의 구문은 다음과 같습니다.

ON DUPLICATE KEY UPDATE column1=value1, column2=value2, ...;

이해해야 할 핵심 측면은 다음과 같습니다. MySQL이 삽입 및 업데이트되는 값을 참조하는 방법. 기본적으로 등호 앞 부분은 INSERT INTO 절에 명명된 열을 참조하고, 등호 뒤 부분은 SELECT 절에 명명된 열을 참조합니다.

예를 들어 다음 쿼리를 고려해보세요.

INSERT INTO lee(exp_id, created_by, location, animal, starttime, endtime, entct, inact, inadur, inadist, smlct, smldur, smldist, larct, lardur, lardist, emptyct, emptydur)
SELECT id, uid, t.location, t.animal, t.starttime, t.endtime, t.entct, t.inact, t.inadur, t.inadist, t.smlct, t.smldur, t.smldist, t.larct, t.lardur, t.lardist, t.emptyct, t.emptydur 
FROM tmp t WHERE uid=x
ON DUPLICATE KEY UPDATE entct=t.entct, inact=t.inact, ...;

이 쿼리에서는 INSERT INTO 절에 명명된 열이 열 할당에 사용됩니다. 기본값:

  • exp_id
  • created_by
  • 위치
  • 동물
  • 시작 시간
  • 종료 시간

SELECT 절은 업데이트를 지정하는 데 사용됩니다. 값:

  • t.location
  • t.animal
  • t.starttime
  • t .endtime
  • t.entct
  • t.inact
  • t.inadur
  • t.inadist
  • t.smlct
  • t.smldur
  • t.smldist
  • t.larct
  • t.lar dur
  • t.lardist
  • t.emptyct
  • t.emptydur

열 ON DUPLICATE KEY UPDATE 절에 포함되지 않은 내용은 업데이트되지 않습니다.

위 내용은 MySQL은 INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 구문을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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