How to avoid inserting duplicate records when using a T-SQL Merge statement

后端 未结 3 707
再見小時候
再見小時候 2021-02-19 00:32

I am attempting to insert many records using T-SQL\'s MERGE statement, but my query fails to INSERT when there are duplicate records in the source table. The failure is caused b

3条回答
  •  执笔经年
    2021-02-19 01:09

    Instead of GROUP BY you can use an analytic function, allowing you to select a specific record in the set of duplicate records to merge.

    MERGE INTO dbo.tbl1 AS tbl
    USING (
        SELECT *
        FROM (
            SELECT *, ROW_NUMBER() OVER (PARTITION BY col2, col3 ORDER BY ModifiedDate DESC) AS Rn
            FROM #tmp
        ) t
        WHERE Rn = 1    --choose the most recently modified record
    ) AS src
    ON (tbl.col2 = src.col2 AND tbl.col3 = src.col3)
    

提交回复
热议问题