Nim*_*ral 2 sql sql-server select sql-delete
我需要选择记录,检查我的选择标准并加强它,直到我得到我需要的所有记录,然后删除(或以其他方式更改)那些.让我们暂时删除.
select <fields> from <database> where <condition>
Run Code Online (Sandbox Code Playgroud)
(检查,调整条件)
delete from <database> where (<same condition>)
Run Code Online (Sandbox Code Playgroud)
这里不是像管道那样更容易将选定的记录直接推送到删除语句中吗?我使用技术选择所有记录号到临时数据库,但是没有直接的方法吗?
我搜索了Stack Overflow,发现了一些问题,人们会问如何将select语句转换为delete语句,这不是我想要的.我的想法是这样的:
select ... from ... where ... | delete
Run Code Online (Sandbox Code Playgroud)
或者像这样的东西作为一种解决方法......
/* create a list of records to delete */
select ... from ... where ... into @temp
/* shove the list into delete */
delete @temp
Run Code Online (Sandbox Code Playgroud)
SQL标准是否支持我想要的机制,或者是否有特定于平台的方法(MS SQL Server)?
你可以使用a Common Table Expression,像这样:
;WITH CTE AS (
select <fields>
from <table>
where <condition>
)
DELETE FROM CTE
Run Code Online (Sandbox Code Playgroud)
此语句将删除查询返回的所有记录.
您可以选择添加应用于CTE查询返回的内联表的额外条件,例如:
;WITH CTE AS (
select <fields>
from <table>
where <condition>
)
DELETE FROM CTE
WHERE <more conditions on CTE fields>
Run Code Online (Sandbox Code Playgroud)