2013-05-21 2 views
4

행을 반환하는 SELECT와 선택한 행의 하위 집합을 삭제하는 DELETE를 결합하고 싶습니다.SQL - 삭제 된 행을 반환하십시오.

이것이 가능합니까?

+3

어떤 RDBMS를? 또한 원하는 결과를 보여주는 샘플을 제공 할 수 있습니까? –

+0

같은 쿼리에 있지 않습니다. –

+2

SQL 서버. 결과는 반환 된 일부 행에서 SELECT를 수행하는 것이 더 이상 데이터베이스에 존재하지 않을 것입니다. –

답변

8

모든 후보를 반환하는 SELECT 문이있는 경우 OUTPUT DELETED. *를 사용하여 SELECT를 DELETE로 변경하십시오.

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 2005 2005 –

+0

그것은 SQL 2005와 함께 작동해야합니다. 다음과 같이 테이블 변수에 넣어야 할 수도 있습니다. DELETE FROM TestTable OUTPUT Deleted.ID, Deleted.TEXTVal INTO @TmpTable –

+0

예, 응답을 업데이트했습니다. 하지만 그것은 나에게 동료 평가 메시지를 기다리고있었습니다. INTO 절은 선택 사항입니다. :-) –

관련 문제