2011-11-23 1 views
3

SQL 삭제에 문제가 있습니다. SQL Server는 table_02에서 행을 삭제하는 where 절에 여러 매개 변수가있는 것을 좋아하지 않습니다 (하위 쿼리는 테이블 1 임). 이것에 대한 어떤 도움도 크게 감사 할 것입니다.SQL Server - 하위 쿼리를 사용하여 여러 where 절이있는 행을 삭제하는 데 도움이됩니다.

감사합니다.

DELETE FROM table_02 
     WHERE (col_1,col_2,col_3,col_4) 
     IN (   
      SELECT col_1,col_2,col_3,col_4 
        FROM table_01 
        GROUP BY 
        col_1,col_2,col_3,col_4 
        HAVING SUM(CASE WHEN col_1<6 THEN col_2*-1 ELSE col_2 END)=0 
      ) 

답변

5

당신은 EXISTS

DELETE 
FROM table_02 
WHERE EXISTS(SELECT * 
       FROM table_01 
       WHERE table_02.col_1 = table_01.col_1 
        AND table_02.col_2 = table_01.col_2 
        AND table_02.col_3 = table_01.col_3 
        AND table_02.col_4 = table_01.col_4 
       HAVING SUM(CASE 
          WHEN col_1 < 6 THEN col_2 * -1 
          ELSE col_2 
         END) = 0) 
1
Delete a 
from table1 a 
Inner Join table2 b 
on a.col = b.col 
WHERE ... 
IN을 다시 작성할 수 있습니다
관련 문제