基于连接的动态删除语句?

时间:2018-05-15 21:13:23

标签: sql sql-server tsql

我有一个带有GroupUserTVP表值参数的存储过程:

select C.Persona,C.Producto,
        Sum(C.Cantidad*P.Precio) [Total_Purchase],
        MAX (C.Cantidad*P.Precio) [Total_Purchase
from
Compras C JOIN Precios P ON C.Producto=P.Item
group by C.Producto ,C.Persona

我有一个CREATE TYPE [dbo].[GroupUserTVP] AS TABLE ( [GroupId] [uniqueidentifier] NULL, [UserId] [uniqueidentifier] NULL ) 表,其结构如下:

GroupUser

TVP将包含GroupId和UserId的集合。如果GroupUser表中的组用户不在TVP中,则应删除这些组用户。

有没有办法根据连接执行某种类型的动态删除语句来完成此操作?我可以把它分成几部分并使用表变量等,但是想知道这里的SQL专家是否可以在一个语句或两个语句中写这个删除?

1 个答案:

答案 0 :(得分:0)

DELETE tvp FROM TVP tvp FULL OUTER JOIN SimpleTable tbl ON tvp.FK = tbl.ID

它将删除Simple表中不存在的所有记录