我正在将表数据存档到存档表。为此,我只是根据某些条件将记录插入到归档表中,在下一个语句中,我删除了主表中具有相同条件的记录。
但是为了提高性能,建议使用带有输出子句的单个语句。
代码:
INSERT INTO AR_tbl1
SELECT GETDATE(), D.*
FROM
(DELETE FROM tbl1
WHERE Amt >= 40
OUTPUT DELETED.*) D
但这不起作用。如果我评论where子句它的工作原理。请帮我修复where
子句
答案 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