整个 w=10=sh 除
TSQL Select Delete
只是好奇...TSQL 中是否有一个命令会删除我刚刚从 table 中选择的行?
在伪 SQL 中,类似于
SELECT * FROM TableA THEN DELETE
或
SELECT * FROM TableA WITH (DELETEROWS)
注意:我不只是想删除行,我想 return 临时 table 的行,然后 然后 删除它们,在同一条语句中
您可以使用 output clause:
获取刚刚 删除的行
DELETE FROM TableA
OUTPUT deleted.* --TODO name columns, identify table to insert into, etc
所以,整体应该是一样的,只是操作的顺序颠倒了。
您可以在 DELETE
中使用 OUTPUT
语句。这将允许您捕获已删除行的所有详细信息。
如果先执行 SELECT
,则需要将这些行捕获到 table,然后删除 table.
中的行
如果您重复 SELECT
的逻辑,您 可能会 运行 出现问题,因为新行可能 inserted/modified/deleted 介于SELECT
和 DELETE
,所以两者可能不一致。
DELETE FROM Table1
WHERE Day = '201507015'
这将删除 table 中名称为 Table 1 的所有记录,第 1 列,该列中的记录是今天 - 20150715 (yyyymmdd)。
只是好奇...TSQL 中是否有一个命令会删除我刚刚从 table 中选择的行?
在伪 SQL 中,类似于
SELECT * FROM TableA THEN DELETE
或
SELECT * FROM TableA WITH (DELETEROWS)
注意:我不只是想删除行,我想 return 临时 table 的行,然后 然后 删除它们,在同一条语句中
您可以使用 output clause:
获取刚刚 删除的行DELETE FROM TableA
OUTPUT deleted.* --TODO name columns, identify table to insert into, etc
所以,整体应该是一样的,只是操作的顺序颠倒了。
您可以在 DELETE
中使用 OUTPUT
语句。这将允许您捕获已删除行的所有详细信息。
如果先执行 SELECT
,则需要将这些行捕获到 table,然后删除 table.
如果您重复 SELECT
的逻辑,您 可能会 运行 出现问题,因为新行可能 inserted/modified/deleted 介于SELECT
和 DELETE
,所以两者可能不一致。
DELETE FROM Table1
WHERE Day = '201507015'
这将删除 table 中名称为 Table 1 的所有记录,第 1 列,该列中的记录是今天 - 20150715 (yyyymmdd)。