院系表: 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 和姓名
解题方案:
1.select c.id as id, c.`name` as `name`from
(select a.id as id, a.`name` as `name`, b.id as `b_id` from Students a
left join Departments b
on a.department_id =b.id) as c
where c.b_id is null
2.
select id, `name` from Students where department_id not in(select id from departments)
总结:工作中尽量不使用in进行过滤
其中,mysql in的相关资料可以借鉴https://zhuanlan.zhihu.com/p/90745848