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