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 중국어 웹사이트의 기타 관련 기사를 참조하세요!