免费教程《图解 SQL 面试题》
  • 图解 SQL 面试题
  • 第 1 章:简单查询
  • 图解面试题:如何查找重复数据?
  • 第 2 章:复杂查询
    • 图解面试题:如何查找第 N 高的数据?
  • 第 3 章 多表查询?
    • 图解面试题:多表如何查询?
    • 图解面试题:如何查找不在表里的数据?
    • 图解面试题:你有多久没涨过工资了?
    • 图解面试题:如何比较日期数据?
    • 图解面试题:如何交换数据?
    • 滴滴 2020 年面试题:如何找出最小的 N 个数?
    • 图解面试题:行列互换问题,怎么办?
    • 图解面试题:找出连续出现 N 次的内容?
    • 链家面试题:如何分析留存率?
  • 第 4 章
    • 拼多多面试题:如何查找前 20% 的数据?
    • 图解面试题:如何查找工资前三高的员工
    • 图解面试题:如何分组比较?
    • 图解面试题:双 11 用户如何分析?
    • 图解面试题:如何分析游戏?
  • 第 5 章:项目实战
    • 图解面试题:滴滴 2020 求职真题
    • 滴滴面试题:打车业务问题如何分析?
    • 电商面试题:如何分析复杂业务?
    • 图解面试题:如何分析用户满意度?
    • 图解面试题:如何分析红包领取情况?
    • 图解面试题:如何分析中位数?
    • 小红书面试题:如何分析用户行为?
    • 教育行业案例:学员续费如何分析?
    • 字节跳动面试题:你的平均薪水是多少?
Powered by GitBook
On this page

Was this helpful?

  1. 第 3 章 多表查询?

图解面试题:如何查找不在表里的数据?

Previous图解面试题:多表如何查询?Next图解面试题:你有多久没涨过工资了?

Last updated 4 years ago

Was this helpful?

【题目】

下面是学生的名单,表名为 “学生表”;近视学生的名单,表名为 “近视学生表”。请问不是近视眼的学生都有谁?

(“学生表”表中的学号与 “近视学生” 表中的学生学号一一对应)

【解题思路】

1. 我们先来拆解问题:不是近视眼的学生都有谁?

1)“不是近视眼” 的学生,近视信息在 “近视学生” 表里

2) “学生都有谁?”,要求的是 “学生姓名”,所以我们的输出答案应该是“学生姓名”,这在“学生” 表里。

涉及 2 张以上表的查询时,我们需要用到多表联结。

2. 使用哪种联结呢?

在《从零学会 SQL:多表查询》这个课里我讲过各个联结的情况:

其中上图黑色框里的 sql 解决的问题是:不在表里的数据,也就是在表 A 里的数据,但是不在表 B 里的数据。

对于这个题目 “不是近视眼的学生都有谁?”,就是在“学生表” 里的数据,但是不在 “近视学生” 表里的数据。我们选择下图黑色框里的左联结 sql 语句。

select ...
from 表1 as a
left join 表2 as b
on a.列名=b.列名
where b.列名 is null;

3. 多表如何联结?

题目已给出,联结两表的关键依据分别为 “学号” 和“学生学号”。示意图如下:

【解题步骤】

使用分析思路里的 sql 语句联结两表

select a.姓名 as 不近视的学生名单
from 学生表 as a
left join 近视学生表 as b
on a.学号=b.学生学号
where b.序号 is null;

我们来理解下这个 sql 的运行过程,方便你更深入的理解。

1)在不加 where 字句的情况下,两表联结得到下图的表

2)假设 where 字句(where b. 序号 is null;)就会把 b. 序号这一列里为空值(NULL)的行选出来,就是题目要求的不近视的学生。(下图绿色框里的行)

【本题考点】

本题主要考察多表联结。

遇到要查找 “不在表里的数据,也就是在表 A 里的数据,但是不在表 B 里的数据。” 可以使用下图黑框里的 sql 语句。

【举一反三】

查找 “不在表里的数据” 应用案例:

某网站包含两个表,顾客姓名表(表名 Customers)和 购买记录表(表名 Orders)。找出所有从不订购任何东西的客户。

(“顾客姓名表”中的 ID 与 “购买记录” 表中的 CustomerId 一一对应)

参考答案:

select a.Name as Customers
from Customers as a
left join Orders as b
on a.Id=b.CustomerId
where b.CustomerId is null;

输出结果:

推荐:

如何提升你的分析技能,实现升职加薪?