2014-09-13 67 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

您無法從一個語句中的多個表中刪除。您可以加入儘可能多的表格以獲取必須刪除的記錄,但每個表格需要一個「刪除」。 – dasblinkenlight 2014-09-13 01:37:27

回答

2

爲什麼不只是做四個刪除?

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; 

您可以在一個查詢中這樣做,因爲:

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'; 

這因小失大,雖然,其中一個表將會對學生沒有任何記錄。如果join沒有匹配,則不會被刪除。

+0

這是一個問題。如果其中一個表沒有數據,我需要從其他三個表中刪除行。那可能嗎? – 2014-09-13 01:43:10

+0

@ eddard.stark。 。 。做四個單獨的刪除。 – 2014-09-13 03:12:02

+0

感謝您的回答 – 2014-09-13 23:32:49