SQL删除并返回字段

问题描述 投票:1回答:1

我想运行一个SQL查询,该查询在一定条件下会从表中删除,但还会返回要删除的数据的列,以便我可以在服务器上对其进行一些处理。

显然,我可以将它们分为两个查询,例如:

SELECT name 
FROM users
WHERE username = '...';
DELETE FROM users
WHERE username = '...';

但是我想知道是否有一种使用参数的方法,或者可能是PRINT仅发送一个将删除并返回要删除项目的name字段的查询。这可能还是我应该坚持两个查询?

sql-server sql-delete
1个回答
3
投票

您可以在OUTPUT(和DELETE / UPDATE)上使用INSERT关键字捕获已删除的行。您将需要捕获到临时表(或表变量)中以对其进行处理:

CREATE TABLE #Del
(
    [name] VARCHAR (25)
)

DELETE FROM Users
OUTPUT DELETED.name
INTO #Del
WHERE UserName = 'John.Doe';  

SELECT * FROM #Del -- do what you need to do here
© www.soinside.com 2019 - 2024. All rights reserved.