从删除的输出子句插入

时间:2014-06-30 05:07:20

标签: sql sql-server-2008 tsql

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

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

代码:

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

但这不起作用。如果我评论where子句它的工作原理。请帮我修复where子句

的逻辑

2 个答案:

答案 0 :(得分:1)

我说完。谢谢马丁。问题在于订单。 Output子句需要在where子句之前添加。

新代码:

INSERT INTO AR_tbl1 
SELECT D.*
FROM
    (DELETE FROM tbl1 
    OUTPUT DELETED.* 
WHERE Amt >= 40) D

答案 1 :(得分:0)

尽管此问题的答案已被接受,但我认为以下查询将更简洁代替使用derived table

DELETE FROM tbl1 
OUTPUT GETDATE(), DELETED.*
INTO AR_tbl1
WHERE Amt >= 40