집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server의 MERGE 문은 MySQL의 ON DUPLICATE KEY 업데이트를 어떻게 모방합니까?
MySQL의 ON DUPLICATE KEY UPDATE에 대한 SQL Server의 대응
MySQL에서 ON DUPLICATE KEY UPDATE 절을 사용하면 사용자가 업데이트 대신 기존 행을 업데이트할 수 있습니다. 중복된 키가 발견되면 새 키를 삽입합니다. 이 기능은 고유 제약 조건과 기본 키를 처리할 때 특히 유용합니다.
SQL Server의 MERGE 문
SQL Server에는 MySQL의 ON DUPLICATE KEY와 완전히 동일한 기능이 없지만 업데이트, 유사한 솔루션으로 MERGE 문을 제공합니다. MERGE는 INSERT, UPDATE 및 DELETE 문의 기능을 단일 쿼리로 결합하여 중복 값을 효율적으로 처리할 수 있도록 합니다.
MERGE를 사용하여 ON DUPLICATE KEY UPDATE 구현
SQL Server에서 중복 업데이트 동작을 구현하려면 다음을 사용할 수 있습니다. 구문:
MERGE INTO [target_table] AS target USING [source_table] AS source ON (target.[matching_column] = source.[matching_column]) WHEN MATCHED THEN UPDATE SET [target_column] = [source_column] WHEN NOT MATCHED THEN INSERT ([target_column]) VALUES ([source_column]);
예
METER_DATA라는 테이블에 데이터를 삽입하고 rtu_id 및 time_local을 기반으로 중복이 존재하는 경우 행 값을 업데이트하는 다음 쿼리를 고려해 보세요. 열:
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');
이 쿼리는 소스 테이블의 값을 대상 테이블에 삽입합니다. rtu_id와 time_local이 동일한 행이 아직 존재하지 않는 경우 중복 행이 존재하는 경우 대상 테이블의 기존 데이터를 유지하면서 업데이트가 대신 수행됩니다.
위 내용은 SQL Server의 MERGE 문은 MySQL의 ON DUPLICATE KEY 업데이트를 어떻게 모방합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!