2011-07-06 2 views

답변

11

SELECT 문 이외에는 서브 쿼리 인수/CTE를 사용할 수 없습니다. From the documentation:

당신은 어떤 최상위 SELECT 문에서 서브 쿼리의 대부분 종류의이 절을 지정할 수 있습니다.

당신은이 작업을 수행 할 수 있습니다 :

DELETE FROM tbl WHERE tbl.id IN 
(WITH X AS(), Y AS(), Z AS() 
SELECT id FROM TBL 
WHERE TBL.ID IN (SELECT ID FROM Z)); 
1

글쎄, 적어도 앨리어싱 된 쿼리를 어떻게 든 FROM 문에 표시해야합니다. 나는 더 많은 이슈가 있는지 모르지만 그것은 꼭 필요하다 (그리고 나는 00928이 당신이하지 않을 때 일어나는 오류라고 믿는다).

+0

그래, 내가 오라클 원 주목 SQL Server와 같이 사용하지 않는 하위 쿼리를 남겨 둘 수 없습니다. –

7

을 나는이 일을하는 데 (이 내가 SQL 서버에서 작동하지 않습니다 확신) :

DELETE FROM TBL 
WHERE TBL.ID IN (
    WITH X AS(), Y AS(), Z AS() 
    SELECT ID FROM Z 
); 
+0

멋지다. 절대로 시도하지 않았다. –