2015-01-22 4 views
0

두 열의 값으로 식별되는 테이블에서 행을 선택하려고합니다. 값은 다른 테이블에 있습니다. 예 도움이 될 것입니다SQL : 다른 테이블에서 선택한 열을 기반으로 테이블에서 행 삭제

A | B | C 
101 1 x 
102 1 o 
103 1 o 

SELECT A, B FROM Table1 where Table1.C = 'o'

반환 : 나는 표 2의 행을 삭제할

A | B 
102 1 
103 1 

경우 A와 B가 일치 표에서 쿼리에 의해 반환 된 .

A | B | D 
101 1 Not selected 

첫 번째 선택 작품,하지만 난 거기에서 어디로 볼 수 없습니다 :

표 2

A | B | D 
101 1 Not deleted 
102 1 Deleted 
103 1 Deleted 

이된다. 현재 다음과 같은 사항이 있지만 오류가 발생하고 무엇을해야하는지 명확하지 않습니다. 튜토리얼은 SQL을 처음 사용하기 때문에 환영합니다. 당신이 당신의 쿼리로 IN 절을 사용하는 경우

DELETE Table2 
    where A, B in 
     (SELECT A, B FROM Table1 
    where Table1.C = 'o') 
+2

첫 번째 쿼리는 102 행을 반환합니다. 입출력 데이터를 확인해 주시겠습니까? –

+0

죄송합니다, typo가 수정되었습니다. 102 행과 103 행을 리턴해야합니다. –

답변

1

당신은 where 부분에 1 개 이상의 필드를 지정할 수 없습니다. 대신, 당신은이 작업을 수행 할 수 있습니다

delete t from 
table2 t 
inner join table1 s on t.a = s.a and t.b = s.b 
where s.c = 'o' 

Demo

관련 문제