工资比领导高的查询 SQL,是 Oracle 面试题里比较常见的一个小套路。用起来挺简单,但理解起来其实还蛮有意思的,尤其适合刚开始接触多表关联查询的同学练手。这里用的是自连接的写法,把emp表自己连自己,查出员工e1的工资比他上级e2高的情况,直观。

字段方面,e1.ename是员工名,e1.sal是员工工资,e2.ename是他的上司,后面再比一下工资大小。SQL 长得不复杂,但结构清晰,语义也明了,面试拿来讲还挺有范儿。

整段 SQL 如下:

select e1.ename employee, e1.sal, e2.ename manager, e2.sal
from emp e1,
     (select ename, sal, empno from emp) e2
where e1.sal > e2.sal
  and e1.mgr = e2.empno;

你也可以拓展下,比如加上deptno查同部门,或者加点排序,方便看结果。执行结果里像FORDSCOTT就是比他们上级JONES工资还高的员工。

顺带说一句,emp表是 Oracle 自带的经典示例表,面试时常被考,不熟悉的可以先看看结构。下面这几个资料也可以拓展看看,挺有用的:

如果你在做练习题,或者准备 Oracle 方向的面试,这种自连接的用法一定得搞明白,多写几遍,熟能生巧。