首发于 SQL

如何查找不在表里的数据?利用left/right/inner join和is null

题目

有两张表:学生表”:姓名,学号(主键);“近视学生表”:序号,学生学号(主键)。(“学生表”表中的学号与“近视学生”表中的学生学号一一对应)

请问 不是 近视眼的学生都有谁?

思路

1.确定所要查询的字段出自什么表

近视信息在“近视学生”表里,“学生姓名”在“学生”表里。

2.确定使用什么联结

因为是要查询在“学生表”里的数据,但不在“近视学生”表里的数据,因此选择左连接。

3.两个表联结条件是什么?

因为“学生表”表中的学号与“近视学生”表中的学生学号一一对应,因此联结两表的关键依据分别为“学号”和“学生学号”

语句

select a.姓名 as 不近视的学生名单
from 学生表 as a
left join 近视学生表 as b