1

我有两张桌子:chosenunitunits。在chosenunit表中有 2 列student_idunit_id. 单位表有unit_idunit_name列,其中包含系统中的所有单位。假设有 2 名学生的 id 分别为 1000 和 1001。他们就读于多个单位。selectedunit 表将如下所示:

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

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

4

1 回答 1

6

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

首先是使用LEFT JOINand IS 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
        )
于 2013-05-19T09:50:50.633 回答