집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server의 MERGE 문은 MySQL의 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 문은 서버는 여러 가지를 제공합니다 장점:
위 내용은 SQL Server의 MERGE 문은 MySQL의 ON DUPLICATE KEY UPDATE와 어떻게 비교됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!