>데이터 베이스 >MySQL 튜토리얼 >SQL Server의 MERGE 문은 MySQL의 ON DUPLICATE KEY UPDATE와 어떻게 비교됩니까?

SQL Server의 MERGE 문은 MySQL의 ON DUPLICATE KEY UPDATE와 어떻게 비교됩니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-27 12:08:14444검색

How Does SQL Server's MERGE Statement Compare to MySQL's ON DUPLICATE KEY UPDATE?

SQL Server의 MERGE 문: MySQL의 ON DUPLICATE KEY UPDATE에 대한 다양한 대안

MySQL에서 ON DUPLICATE KEY UPDATE 절은 다음을 허용합니다. UNIQUE 인덱스나 PRIMARY KEY를 사용하여 테이블에 데이터를 삽입할 때 기존 행을 수정합니다. SQL Server에는 정확히 동등한 기능이 없지만 MERGE 문은 중복 데이터를 처리하기 위한 강력하고 유연한 솔루션을 제공합니다.

MERGE 문 소개

MERGE 문은 INSERT 및 UPDATE 문의 기능을 단일 작업으로 통합합니다. 지정된 조건을 평가하여 새 행을 삽입할지 아니면 기존 행을 업데이트할지 결정합니다. 기본 MERGE 문의 구문은 다음과 같습니다.

MERGE INTO target_table AS target
USING source_table AS source
ON (target.column_name = source.column_name)
WHEN MATCHED THEN
    UPDATE SET target.column_name = source.column_name
WHEN NOT MATCHED THEN
    INSERT (target.column_names) VALUES (source.column_values)

사용 예

MERGE 문을 사용하여 중복 데이터를 처리하는 방법을 설명하려면 다음 예를 고려하세요.

MERGE
INTO MyBigDB.dbo.METER_DATA WITH (HOLDLOCK) AS target
USING (SELECT
    77748 AS rtu_id
   ,'12B096876' AS meter_id
   ,56112 AS meter_reading
   ,'20150602 00:20:11' AS time_local) AS source
(rtu_id, meter_id, meter_reading, time_local)
ON (target.rtu_id = source.rtu_id
  AND target.time_local = source.time_local)
WHEN MATCHED
  THEN UPDATE
      SET meter_id = '12B096876'
         ,meter_reading = 56112
WHEN NOT MATCHED
  THEN INSERT (rtu_id, meter_id, meter_reading, time_local)
      VALUES (77748, '12B096876', 56112, '20150602 00:20:11');

이 예에서 MERGE 문은 소스 테이블의 데이터를 사용하는 MyBigDB.dbo.METER_DATA 테이블. rtu_id 및 time_local 값이 동일한 행이 이미 존재하는 경우 명령문은 해당 행을 Meter_id 및 Meter_reading에 대해 지정된 값으로 업데이트합니다. 그렇지 않으면 명령문은 테이블에 새 행을 삽입합니다.

MERGE 문의 장점

MySQL의 ON DUPLICATE KEY UPDATE 절에 비해 SQL의 MERGE 문은 서버는 여러 가지를 제공합니다 장점:

  • 다양성: MERGE 문을 사용하면 다양한 조건에 따라 다양한 열을 업데이트하는 여러 WHEN MATCHED 절을 제공하여 더욱 복잡한 업데이트 작업을 수행할 수 있습니다.
  • 동시성 제어: MERGE 문의 WITH(HOLDLOCK) 옵션은 대상 테이블이 작업 중에 잠기므로 다른 동시 트랜잭션이 영향을 받는 행을 수정하는 것을 방지할 수 있습니다.
  • 대량 업데이트: MERGE 문을 사용하면 대량 업데이트를 효율적으로 수행하여 데이터베이스 왕복 횟수를 줄일 수 있습니다. 복잡한 데이터 조작에 필요합니다.

위 내용은 SQL Server의 MERGE 문은 MySQL의 ON DUPLICATE KEY UPDATE와 어떻게 비교됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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