如何选择id不等于答案数组的位置

时间:2013-02-24 20:35:45

标签: mysql sql

我有一张桌子,我列出了参加课程的用户。在此表下方,我想要一个<select>字段,其中包含不参加课程的用户列表。

列出参加课程的用户的查询:

SELECT * FROM User
 left join UserCourse on User.id = UserCourse.fkStudentId
 where UserCourse.fkCourseId = 1 and u.fkRoleId = 3;

这是我的代码,我尝试列出“例外”:

SELECT * FROM User where id != 
(SELECT id FROM User
 left join UserCourse on User.id = UserCourse.fkStudentId
 where UserCourse.fkCourseId = 1 and u.fkRoleId = 3);

问题是,有几行与第二个查询匹配,这是不允许的。 您对如何列出未参加的学生有任何建议吗?

1 个答案:

答案 0 :(得分:5)

!=替换为NOT IN

SELECT * FROM User where id NOT IN
(SELECT id FROM User
 left join UserCourse on User.id = UserCourse.fkStudentId
 where UserCourse.fkCourseId = 1 and u.fkRoleId = 3);