1
我不知道這一點,到目前爲止,我有這些表:MySQL的 - 選擇沒有匹配或有一個條件的行
- 學生 - 列:ID,名稱
- stud_class - 列:students_id,類標識碼
- 類 - 列:ID,courses_id
- 課程 - 列:ID,名稱
,我需要選擇那些沒有匹配的行中的stud_class表學生OR那些誰在類的指定當然不是(在給定的過程是一個參數)。
例如:選擇沒有任何班級或班級中的學生,但不包括course.id = 2
的班級。
我到目前爲止這樣做,但它不起作用,查詢返回沒有行。我知道這有點令人困惑,但我不知道如何在這種情況下使用JOINS。
SELECT students.id, students.name
FROM students, stud_class, class
WHERE (NOT (students.id = stud_class.students_id))
OR ((students.id=stud_class.students.id) AND
(stud_class.class_id=class.id) AND
(NOT (class.course_id=2))
);
與您的問題無關,但您的查詢使用較舊的ANSI-89樣式連接。可能要考慮切換到[ANSI-92樣式JOINs](http://en.wikipedia.org/wiki/Join_%28SQL%29)。 – Leigh