如何在一个查询中更新和插入T-SQL

时间:2014-03-21 10:57:44

标签: sql sql-server tsql

我有一个不时需要更新的数据库。 更新运行时也可能发生新数据。

在MySQL中有一个选项

INSERT INTO IGNORE

我在T-SQL中找不到这样的东西。 没有问题更新ID 1-4,但是有一个ID 5的新记录。 UPDATE查询无法在此处运行。 当我尝试再次插入所有数据时,我收到了DUPLICATE KEY错误。

其他信息: 我忘了说我的数据来自外部资源。我调用API来从中获取数据。从那里我必须将这些数据插入我的数据库。

我必须承认我并不理解MERGE。所以我现在的解决方案是首先使用TRUNCATE,然后再次插入所有数据。 不是最好的解决方案,但MERGE工作,到目前为止我理解它,有两个表。但我只有一张桌子。并且临时创建一个表来使用MERGE,然后放下那个表在我的眼中对我的小桌子有200个记录。

2 个答案:

答案 0 :(得分:4)

您可以使用MERGE关键字。基本上,您需要指定与目标表连接数据源的列,并根据它是匹配(现有记录)还是不匹配(新记录),运行UPDATEINSERT

参考:http://msdn.microsoft.com/en-us/library/bb510625.aspx

答案 1 :(得分:0)

存储过程是一个选项吗?

CREATE PROCEDURE dbo.Testing (@ID int, @Field1 varchar(20))
AS
BEGIN
    UPDATE tblTesting
    SET Field1 = @Field1
    WHERE ID = @ID

    IF @@ROWCOUNT = 0
        INSERT INTO tblTesting (ID, Field1) SELECT @ID, @Field1
END