无重复的SQL插入

无重复的SQL插入,sql,sql-server,duplicate-data,insertion,Sql,Sql Server,Duplicate Data,Insertion,SQL Server是否有一个特定的命令,用于插入大量具有以下条件的行:如果数据库中已经存在一行,则在插入过程中不复制该行 已编辑 在sqlbulkcopy中,我想避免异常,因为表中已经有一行了?如何在T-SQL中执行它(虽然文章有点旧)如何在T-SQL中执行它(尽管文章有点旧)您可以使用MERGE命令来实现这一点。示例用法 CREATE TABLE #A( [id] [int] NOT NULL PRIMARY KEY CLUSTERED, [C] [varchar](200) NOT N

SQL Server是否有一个特定的命令,用于插入大量具有以下条件的行:如果数据库中已经存在一行,则在插入过程中不复制该行

已编辑


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

如何在T-SQL中执行它(虽然文章有点旧)

如何在T-SQL中执行它(尽管文章有点旧)

您可以使用
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);

编辑尽管您在编辑中说这是批量复制?您还可以研究索引上的“忽略重复键”选项。

您可以使用
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);
编辑尽管您在编辑中说这是批量复制?您还可以研究索引上的“忽略重复键”选项