2016-10-11 4 views
1

이 쿼리를 사용하여 테이블의 레코드 조합이 같은 레코드를 삭제하려고합니다. 구문은 PostgreSQL에서는 작동하지만 SQL Server에서는 작동하지 않습니다. 그 이유는 무엇일까요?SQL Server의 그룹을 기반으로 삭제

DELETE FROM Table_stg 
     WHERE (cid , t_date , i_location , item) in 
      (SELECT b.cid , b.t_date, b.i_location, b.itemFROM Table_vw b) 
+3

내부 쿼리에서'from' 앞에 공백이 누락되었습니다. 실제 문제인지 또는 여기에 붙여 넣는 문제인지 확실하지 않습니다. 어쨌든, 어떤 오류가 있습니까? – Mureinik

+0

','근처에 조건이 예상되는 컨텍스트에 지정된 부울 유형의 표현식입니다. 이것은 내가 얻는 오류입니다 – puzeledbysql

+0

'IN (...) '내의'SELECT'는 SQL Server에서 하나의 열만 반환 할 수 있습니다. 그 명령문이 작동하려면 별도의'IN()'을 사용해야 할 것이다. – Kidiskidvogingogin

답변

5

SQL 서버 (또는 다른 데이터베이스)에서는 exists를 사용할 수 있습니다

DELETE FROM Table_stg a 
    WHERE EXISTS (SELECT 1 
        FROM Table_vw b 
        WHERE a.cid = b.cid AND a.t_date = b.t_date AND 
         a.i_location = b.location AND a.item = b.item 
       ); 

SQL 서버가 IN에 대한 튜플을 허용하지 않습니다.

+0

감사합니다. 기록이 IN에 허용되지 않았다는 것을 알지 못했습니다. – puzeledbysql

관련 문제