1

我有一张桌子,我在其中列出了参加课程的用户。在此表下方,我想要一个<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);

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

4

1 回答 1

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);
于 2013-02-24T20:37:41.290 回答