INSERT...ON DUPLICATE KEY UPDATE를 사용하여 여러 열이 있는 UPSERT 수행
UPSERT 작업을 수행하려면(새 행 삽입 또는 기존 업데이트 행) 업데이트 부분에서 새 값과 기존 값을 모두 수용하는 동안 INSERT...ON DUPLICATE KEY UPDATE 문은 일반적으로 사용된. 이 기술을 사용하면 지정된 기본 키가 있는 레코드가 존재하는지 여부에 따라 다양한 시나리오를 처리할 수 있습니다.
간단한 예
Item_Name 열이 있는 Item이라는 테이블을 생각해 보세요. (기본 키) 및 재고 수를 포함하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!