【问题标题】:SQL Insertion without duplication没有重复的 SQL 插入
【发布时间】:2011-04-24 05:24:47
【问题描述】:

是否有针对 SQL Server 的特定命令以插入大量行,条件为:如果数据库中已存在一行,则在插入过程中不会重复它?

已编辑

sqlbulkcopy 中,我想避免异常,因为表格中已经有一行?

【问题讨论】:

    标签: sql sql-server duplicate-data insertion


    【解决方案1】:

    您可以为此使用MERGE 命令。示例用法。

    CREATE TABLE #A(
     [id] [int] NOT NULL PRIMARY KEY CLUSTERED,
     [C] [varchar](200) NOT NULL)
    
    
        MERGE #A AS target
        USING (SELECT 3, 'C') AS source (id, C)
        ON (target.id = source.id)
        /*Uncomment for Upsert Semantics
           WHEN MATCHED THEN 
            UPDATE SET C = source.C */
        WHEN NOT MATCHED THEN    
            INSERT (id, C)
            VALUES (source.id, source.C);
    

    编辑虽然您在编辑中说这是为了批量复制?您还可以调查索引上的“忽略重复键”选项。

    【讨论】:

      【解决方案2】:

      如何在 T-SQL 中做到这一点是discussed here(虽然文章有点老了)

      【讨论】:

        猜你喜欢
        • 2018-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-20
        • 1970-01-01
        • 1970-01-01
        • 2017-05-02
        • 2016-02-19
        相关资源
        最近更新 更多