2013-05-31 49 views
0

我有2個名爲student和teacher的表。我使用以下查詢來獲取輸出即刪除記錄時沒有得到正確的輸出

DELETE from student, teacher 
USING student, teacher 
WHERE teacher.teacher_id = student.teacher_id 
AND teacher.teacher_id !=99 

問題是,當我運行該查詢,我得到一些其他行的老師表,其teacher_id是!= 99實際上,在我的學生表中的一些學生不屬於任何的老師。

請幫我

+1

首先究竟你想要什麼, **'1.選擇2.刪除**?如果**'Delete' **比所有記錄應該被刪除,應該是什麼**'condition' **? – Luv

+0

不確定你的意思。你是說這個問題是在查詢執行後,表中的'teacher_id'不等於99的表中還有記錄嗎?這只是在「學生」表中還是兩者兼而有之?所有剩下的記錄是否有'null'的'teacher_id'? – neelsg

+0

另一個問題是爲什麼複雜你的查詢?我認爲它會執行得更快,並且更容易理解做2個由';'分隔的查詢。這將是'DELETE FROM student WHERE teacher_id <> 99或teacher_id IS NULL; DELETE FROM teacher WHERE teacher_id <> 99或teacher_id IS NULL' – neelsg

回答

1

你在你的問題指出:

問題是,當我運行該查詢,我得到一些其他行的老師表,其teacher_id is !=99

但在你查詢,你有哪裏條件:

teacher.teacher_id !=99 

所以我想你想刪除STUDENTS誰屬於TEACHER 99

這應該工作:

DELETE FROM students 
WHERE teacher_id = 99; 

或者,如果我錯了,你要刪除所有STUDENTS誰不屬於TEACHER 99,則:

DELETE FROM students 
WHERE teacher_id <> 99;