admin

SQL Server,如何从用户定义的表类型中删除更新元素?

sql

我有一个用户定义的表类型,可以说@TT dbo.IntType readonly, IntType是的批处理int,作为主键

CREATE TYPE [dbo].[IntType] AS TABLE(
    [T] [int] NOT NULL,
    PRIMARY KEY CLUSTERED

我喜欢UPDATE根据中的所有key(int)进行操作IntType,而key()的INSERT新行在int数据库中不存在(upsert)

我想知道是否有一种简单的方法可以删除“ UPDATED”键(int)?然后,我可以插入其余的内容。 (或者,如果您有针对SQL Server
2010的超级单行upsert !!!)


阅读 164

收藏
2021-07-01

共1个答案

admin

使用该MERGE语句。

http://technet.microsoft.com/zh-
CN/library/bb510625.aspx

让我看看是否可以放一些东西。

编辑:示例

MERGE INTO [TargetTable] AS T
USING (SELECT l.T AS 'id' FROM @list l ) AS S
ON (T.[id] = S.[id])
WHEN MATCHED THEN
    UPDATE SET
        T.updated = 1
WHEN NOT MATCHED THEN
    INSERT VALUES ([insert value into each column of target table]);

编辑2:参数@list是您使用ID填充所传递的列表

2021-07-01