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

标签 mysql sql

我有一张表,其中列出了参加类(class)的用户。在这张表下面我想要一个 <select>字段,其中包含未参加类(class)的用户列表。

列出参加类(class)的用户的查询:

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

这是我的代码,我在其中尝试列出“异常(exception)”:

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);

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

最佳答案

!= 替换为 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);

关于mysql - 如何选择 id 不等于答案数组的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15056353/

相关文章:

php - 由于某种原因,我似乎没有解析我的第二个 if 语句

Mysql @count := @count + 1 update column based on the sort order of another query

sql - 如何优化此查询?

sql - 云服务器上Postgres全文搜索的进一步优化

sql - Postgres 全文搜索 : how to search multiple words in multiple fields?

sql - 按属性获取最后 5 行,postgres

不同 DBMS 中的 SQL

mysql - 高级MYSQL日期查询

mysql - 如何从主机连接到在 Docker 上运行的 MySQL

java - JSP:多个查询和生成键的问题