> 데이터 베이스 > MySQL 튜토리얼 > SQL에서 여러 열을 사용하여 UPSERT 작업을 효율적으로 수행하려면 어떻게 해야 합니까?

SQL에서 여러 열을 사용하여 UPSERT 작업을 효율적으로 수행하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-10 20:29:14
원래의
374명이 탐색했습니다.

How Can I Efficiently Perform UPSERT Operations with Multiple Columns in SQL?

INSERT...ON DUPLICATE KEY UPDATE를 사용하여 여러 열이 있는 UPSERT 수행

UPSERT 작업을 수행하려면(새 행 삽입 또는 기존 업데이트 행) 업데이트 부분에서 새 값과 기존 값을 모두 수용하는 동안 INSERT...ON DUPLICATE KEY UPDATE 문은 일반적으로 사용된. 이 기술을 사용하면 지정된 기본 키가 있는 레코드가 존재하는지 여부에 따라 다양한 시나리오를 처리할 수 있습니다.

간단한 예

Item_Name 열이 있는 Item이라는 테이블을 생각해 보세요. (기본 키) 및 재고 수를 포함하는 Items_In_Stock. 항목을 받을 때 다음 논리가 적용됩니다.

  • 항목이 없으면 제공된 수량으로 새 레코드를 삽입합니다.
  • 항목이 있으면 Items_In_Stock 열을 업데이트합니다. 기존 값에 새 수량을 추가합니다.

순진한 접근 방식에서는 UPDATE 부분에 여러 SELECT 문을 사용하여 다음 예와 같이 기존 카운트를 사용합니다.

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES('A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = 27 + (SELECT items_in_stock where item_name = 'A')
로그인 후 복사

향상된 솔루션

그러나 이 접근 방식은 불필요하게 복잡할 수 있습니다. PostgreSQL을 사용하면 UPDATE 절에서 ON DUPLICATE KEY 조건을 직접 트리거한 행의 값을 참조할 수 있습니다. 따라서 다음과 같이 문을 단순화할 수 있습니다.

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = `new_items_count` + 27
로그인 후 복사

이 최적화된 문은 추가 SELECT 쿼리의 오버헤드를 방지하고 코드를 더욱 간결하고 우아하게 유지합니다.

위 내용은 SQL에서 여러 열을 사용하여 UPSERT 작업을 효율적으로 수행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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