select
*
from employees e
where not exists (select dept_no from dept_emp de where e.emp_no = de.emp_no)
(这里注意别名两个表,因为两个表都有emp_no,需要区分)
解题思路(运行逻辑):
IN:确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快。
EXISTS:指定一个子查询,检测行的存在。遍历循环外表,然后看外表中的记录有没有和内表的数据一样的。匹配上就将结果放入结果集中。