插入到已删除的输出子句中

Akh*_*hil 3 sql t-sql sql-server-2008

我正在归档我的表数据以归档表。为此,我只是根据某些条件将记录插入到存档表中,并在下一条语句中删除主表中具有相同条件的记录。

但是为了提高性能,建议使用带有输出子句的单个语句。

代码 :

INSERT INTO AR_tbl1 
SELECT GETDATE(), D.*
FROM
    (DELETE FROM tbl1 
    WHERE Amt >= 40  
    OUTPUT DELETED.*) D
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。如果我评论 where 子句,它会起作用。请帮我用where子句修复逻辑

Adn*_*rif 9

虽然这个问题有一个公认的答案,但我认为下面的查询使用derived table.

DELETE FROM tbl1 
OUTPUT GETDATE(), DELETED.*
INTO AR_tbl1
WHERE Amt >= 40
Run Code Online (Sandbox Code Playgroud)


Akh*_*hil 5

我完成了。谢谢马丁。问题出在顺序上。输出子句需要添加在 where 子句之前。

新代码:

INSERT INTO AR_tbl1 
SELECT D.*
FROM
    (DELETE FROM tbl1 
    OUTPUT DELETED.* 
WHERE Amt >= 40) D
Run Code Online (Sandbox Code Playgroud)