2013-05-21 38 views
4

我想結合一個返回行的SELECT和一個刪除我選擇的行的子集的DELETE?SQL - 返回已刪除的行

這可能嗎?

+3

RDBMS是什麼?你也可以提供一個顯示所需結果的樣本嗎? –

+0

不在相同的查詢中。 –

+2

SQL服務器。結果將與在SELECT數據庫中不再存在的某些行上執行SELECT相同 –

回答

8

如果您有一條SELECT語句返回所有候選項,只需將SELECT更改爲DELETE OUTPUT DELETED *。

SELECT * 
FROM tbl1 
INNER JOIN tbl2 on tlb1.col = tbl2.col 
INNER JOIN tlb3 on tbl2.anothercol = tbl3.somecol 
WHERE blah blah blah 

能成爲:

DELETE tbl1 OUTPUT DELETED.* 
FROM tbl1 
INNER JOIN tbl2 on tlb1.col = tbl2.col 
INNER JOIN tlb3 on tbl2.anothercol = tbl3.somecol 
WHERE blah blah blah 
+0

我在'OUTPUT'附近收到錯誤的語法。我正在使用SQL Server 2005 –

+0

它應該與SQL 2005一起工作。您可能必須將其放入表變量中,如下所示:DELETE FROM TestTable OUTPUT Deleted.ID,Deleted.TEXTVal INTO @TmpTable –

+0

是的,我更新了回覆但它給了我一個等待同行評審的信息。 INTO子句是可選的。 :-) –