美文网首页
Leetcode1350. 院系无效的学生(简单)

Leetcode1350. 院系无效的学生(简单)

作者: kaka22 | 来源:发表于2020-07-22 15:24 被阅读0次

    题目
    院系表: Departments

    +---------------+---------+
    | Column Name   | Type    |
    +---------------+---------+
    | id            | int     |
    | name          | varchar |
    +---------------+---------+
    

    id 是该表的主键
    该表包含一所大学每个院系的 id 信息

    学生表: Students

    +---------------+---------+
    | Column Name   | Type    |
    +---------------+---------+
    | id            | int     |
    | name          | varchar |
    | department_id | int     |
    +---------------+---------+
    

    id 是该表的主键
    该表包含一所大学每个学生的 id 和他/她就读的院系信息

    写一条 SQL 语句以查询那些所在院系不存在的学生的 id 和姓名

    可以以任何顺序返回结果

    下面是返回结果格式的例子

    Departments 表:

    +------+--------------------------+
    | id   | name                     |
    +------+--------------------------+
    | 1    | Electrical Engineering   |
    | 7    | Computer Engineering     |
    | 13   | Bussiness Administration |
    +------+--------------------------+
    

    Students 表:

    +------+----------+---------------+
    | id   | name     | department_id |
    +------+----------+---------------+
    | 23   | Alice    | 1             |
    | 1    | Bob      | 7             |
    | 5    | Jennifer | 13            |
    | 2    | John     | 14            |
    | 4    | Jasmine  | 77            |
    | 3    | Steve    | 74            |
    | 6    | Luis     | 1             |
    | 8    | Jonathan | 7             |
    | 7    | Daiana   | 33            |
    | 11   | Madelynn | 1             |
    +------+----------+---------------+
    

    结果表:

    +------+----------+
    | id   | name     |
    +------+----------+
    | 2    | John     |
    | 7    | Daiana   |
    | 4    | Jasmine  |
    | 3    | Steve    |
    +------+----------+
    

    John, Daiana, Steve 和 Jasmine 所在的院系分别是 14, 33, 74 和 77, 其中 14, 33, 74 和 77 并不存在于院系表

    解答
    选出student表中department_id不在departments表中的记录

    select S.id, S.name
    from Students as S
    where S.department_id not in (select D.id
    from Departments as D)
    

    左连接也可以

    SELECT Students.id, Students.name 
    FROM Students LEFT JOIN Departments ON Students.department_id = Departments.id 
    WHERE Departments.id is null;
    

    相关文章

      网友评论

          本文标题:Leetcode1350. 院系无效的学生(简单)

          本文链接:https://www.haomeiwen.com/subject/eaxtlktx.html