> 데이터 베이스 > MySQL 튜토리얼 > MySQL의 'INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE'를 사용하여 새 레코드를 삽입하는 동안 기존 레코드를 효율적으로 업데이트하려면 어떻게 해야 합니까?

MySQL의 'INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE'를 사용하여 새 레코드를 삽입하는 동안 기존 레코드를 효율적으로 업데이트하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-01 03:42:10
원래의
718명이 탐색했습니다.

How Can I Efficiently Update Existing Records While Inserting New Ones Using MySQL's `INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE`?

"INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE"를 사용하여 기존 레코드 업데이트

특정 열이 이미 있을 수 있는 테이블에 데이터를 삽입하는 경우 존재하는 경우 해당 열을 새 값으로 업데이트할 수 있습니다. MySQL은 "ON DUPLICATE KEY UPDATE" 절을 사용하여 이러한 시나리오에 편리한 구문을 제공합니다.

쿼리에는 "INSERT INTO" 문 뒤에 "SELECT" 문이 있습니다. 목표는 "lee" 테이블에 새 행을 삽입하고 고유 키와 일치하는 기존 행을 업데이트하는 것입니다. 이렇게 하려면 "ON DUPLICATE KEY UPDATE" 절에서 업데이트할 열을 지정해야 합니다.

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", "location", "animal", "starttime" 및 "endtime"입니다. "entct", "inact", "inadur", "inadist" 등과 같은 다른 모든 열은 "SELECT" 절의 값으로 업데이트됩니다.

올바른 구문을 사용하면 다음을 수행할 수 있습니다. 단일 쿼리로 삽입과 업데이트를 수행하여 데이터를 효율적으로 최신 상태로 유지하세요.

위 내용은 MySQL의 'INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE'를 사용하여 새 레코드를 삽입하는 동안 기존 레코드를 효율적으로 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿