oracle 子查询的一个疑惑

查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名

select employee_id, last_name,department_id
from employees
where department_id in (
      select department_id
      from employees
      where last_name like '%u%'
)

执行完后大概是这样的:
图片描述

为什么会自动的根据department_id进行分类了呢?

阅读 2.2k
2 个回答

这不是很正常的吗
先执行子查询 然后

select employee_id, last_name,department_id
from employees
where department_id in (60,....)

这样的结果啊
你可以 explain 一下 具体 SQL 看下执行计划

explain plan for 
select employee_id, last_name,department_id
from employees
where department_id in (
      select department_id
      from employees
      where last_name like '%u%'
)

你说的“自动的根据department_id进行分类”,是指结果集中同一个department_id的记录在一起吗?

如果没有加order by department_id 排序语句,结果集的顺序是无法保证, 可能是employees表记录少形成的错觉。

你执行下面的语句十次,然后看一下结果,很可能就不是按照department_id 排序了。

insert into employees select * from employees;
commit;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进