首页 > 解决方案 > SQL 删除并取回字段

问题描述

我想运行一个 SQL 查询,它在条件下从表中删除,但也返回一列被删除的数据,以便我可以在服务器上使用它做一些工作。

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

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

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

标签: sql-serversql-delete

解决方案


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

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

DROP TABLE #Del

推荐阅读