mysql查询获取学生未注册的所有单元

标签 mysql sql

我有两个表:chosenunitunits。在 chosenunit 表中有 2 列 student_idunit_id 。单位表有 unit_idunit_name 列,其中包含系统中的所有单位。假设有 2 个学生,id 分别为 1000 和 1001。他们在几个单位注册。 chosenunit 表将如下所示:

(1000,2000),
(1000,2001),
(1000,2006),
(1001,2000),
(1001,2004),

我需要获取一个学生没有注册的所有单元,如果1000个登录系统,需要显示除2000,2001,2006以外的所有科目的单元名称。

最佳答案

这个问题有很多可能的解决方案。

首先是使用LEFT JOINIS NULL

SELECT  a.*
FROM    units a
        LEFT JOIN choseunits b
            ON a.unit_ID = b.unit_ID AND
                b.student_ID = 1000
WHERE   b.unit_ID IS NULL

要进一步了解有关联接的更多信息,请访问以下链接:

第二个是使用NOT EXISTS

SELECT  a.*
FROM    unit a
WHERE   NOT EXISTS
        (
            SELECT  1
            FROM    choseunit b
            WHERE   a.unit_ID = b.unit_ID AND
                    b.student_ID = 1000
        )

关于mysql查询获取学生未注册的所有单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16633333/

相关文章:

sql - 关于 Sql Server 2008 中的更改跟踪的建议

sql - Oracle 中的 OVER 子句

mysql - SQL UNION 不适用于 2 个 HAVING 子句

mysql - 按多列分组后选择最大计数

mysql - 将左连接与逗号组合起来

mysql - SQL把一条记录分成多条记录

来自多列和空值的每行 SQL 平均值

php - 使用 SSH 与 Laravel 连接 mysql_connect

mysql - 为什么Artifactory服务无法访问mysql?

java - 我想要一个 JComboBox 用用户输入的内容更新建议