2012-06-15 3 views
0

이 문은 오류 00920 - 잘못된 관계 연산자를 반환합니다.다른 테이블의 여러 값을 기반으로 행 삭제

나는 그것이 내 구문이라고 확신하지만 나는 그것을 보지 않을 것이다. 아무도 그것을 볼 수 있고 그것을 바로 잡을 수 있다면, 나는 그것을 감사 할 것입니다.

DELETE FROM TABLE15 p 

    WHERE (p.item_id, p.product_id) IN 

      (SELECT S.item_id, S.product_id) 

       FROM TABLE14 S); 
+0

선택 행 끝의 닫기 중괄호는 오타입니까? – Stefan

+1

추신 : 본질적으로 코드의 버그이므로 닫으려고합니다. 미래의 사용자에게는 그리 유용하지 않습니다. – Ben

답변

2

귀하의 괄호는 사기입니다 ...

DELETE FROM TABLE15 p 
    WHERE (p.item_id, p.product_id) IN 
      (SELECT S.item_id, S.product_id 
       FROM TABLE14 S 
        ); 

당신은 추가로 하나를 제거해야합니다. 추가 브래킷으로 인해 in이 올바르게 구문 분석되지 않아 오류가 발생합니다.

+0

고맙습니다 .... 16 시간이 지나면 흐려진 vsion이어야합니다. 그냥 보지 못했습니다. –

0

이 시도 감사 :

DELETE FROM table15 p 
WHERE (p.item_id IN (SELECT S.item_id 
         FROM table14 S)) 
     OR ((p.product_id IN (SELECT S.product_id 
           FROM table14 S))); 
+0

이 경우 행은'item_id' 및'product_id'의 개별 값을 기반으로 삭제되지만 항목의 의도는 item_id와 product_id의 기존 조합을 기반으로 삭제하는 것입니다. 공정한 시도이기 때문에 나는 그것을 downvote하지 않을 것이다. 그러나 나는 그것이 OP가 의도했던 것을하지 않는다고 생각한다. –

관련 문제