2014-09-13 3 views
0

테이블 몇 개를 삭제해야합니다. 이 테이블은 수수료, 결과, 나뭇잎 및 메시지입니다. 그들 모두에는 student_id라는 필드가 있습니다. student_id 값이 3 인 모든 테이블 행에서 삭제하고 싶습니다.하지만 구문 오류가 발생합니다.합류하여 여러 테이블에서 삭제하려고 할 때 SQL 구문 오류가 발생합니다.

내가 뭘 잘못하고 있니? 내 검색어입니다

delete from fees join results on fees.student_id = results.student_id join messages on results.student_id = messages.student_id join leaves on messages.student_id = leaves.student_id where fees.student_id = '3'; 
+0

하나의 명령문에서 여러 테이블을 삭제할 수 없습니다. 삭제해야하는 레코드를 얻기 위해 필요한만큼 테이블에 조인 할 수 있지만 테이블 당 하나의'delete'가 필요합니다. – dasblinkenlight

답변

2

왜 네 번 삭제하지 않는 것이 좋을까요?

delete f, r, l, m 
    from fees f join 
     results r 
     on f.student_id = r.student_id join 
     messages m 
     on r.student_id = m.student_id join 
     leaves l 
     on m.student_id = l.student_id 
    where f.student_id = '3'; 

이것은 테이블 중 하나는 학생들에 대한 기록이 없다는 것을,하지만 위험을 실행합니다

delete from fees where student_id = 3; 
delete from results where student_id = 3; 
delete from leaves where student_id = 3; 
delete from messages where student_id = 3; 

당신은 한 쿼리에서이 작업을 수행 할 수 있습니다. join에 일치하는 항목이 없으면 아무 것도 삭제되지 않습니다.

+0

이 문제가됩니다. 테이블 중 하나에 데이터가 없으면 다른 세 테이블에서 행을 삭제해야합니다. 그게 가능하니? –

+0

@ eddard.stark. . . 네 개의 개별 삭제를 수행하십시오. –

+0

답변 해 주셔서 감사합니다. –

관련 문제