sql-server - SQL 删除并取回字段
问题描述
我想运行一个 SQL 查询,它在条件下从表中删除,但也返回一列被删除的数据,以便我可以在服务器上使用它做一些工作。
显然,我可以将它们分成两个查询,例如:
SELECT name
FROM users
WHERE username = '...';
DELETE FROM users
WHERE username = '...';
但我想知道是否有一种使用参数的方法,或者可能PRINT
只发送一个查询,该查询将删除并返回name
被删除项目的字段。这是可能的还是我应该坚持两个查询?
解决方案
您可以使用(和/ )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
DROP TABLE #Del
推荐阅读
- flutter - 使用 rxdart 处理具有 bloc 模式的 api 响应
- php - 获取未购买产品的用户
- sql - Azure SQL 超大规模中的跟踪标志
- python - 如何:在 ArchLinux / Raspbian / Volumio / Raspberry 上升级到 Python 3.8.5
- python - Python 控制流“倒退”而不是前进
- c++ - 使用 reinterpret_cast 存储带有 struct 对象的数据时,char 数组长度不正确
- laravel - 如何在laravel的url中隐藏id?
- node.js - nodemon crash - 应用程序崩溃 - 在启动前等待文件更改
- windows - 使用llvm-objdump在exe文件的反汇编中查找符号
- docker - 我已经安装了 docker 版本 19.03,在运行 docker 守护进程时,几天后容器被间歇性删除