我有一张桌子,我列出了参加课程的用户。在此表下方,我想要一个<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);
问题是,有几行与第二个查询匹配,这是不允许的。 您对如何列出未参加的学生有任何建议吗?
答案 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);