Oracle HR库自连接查询如何筛选薪资为2100的员工及薪资数据
解决方案
首先明确你当前SQL的逻辑:是通过自连接关联员工表,e表对应当前员工,d表对应该员工的直属经理,原查询返回的是「员工姓名 + 该员工直属经理的薪资」。根据你的实际筛选需求,分三种场景处理:
场景1:仅查询本人薪资为2100的员工
如果不需要关联经理信息,可直接去掉自连接,添加WHERE条件筛选薪资即可,语句更简洁:
SELECT first_name || ' with the salary of ' || salary AS Employees_and_their_Salary FROM hr.employees WHERE salary = 2100;
场景2:保留自连接逻辑,筛选员工本人薪资为2100
如果你需要保留和经理表的关联逻辑,只要把筛选条件加在员工表e的薪资字段上即可,同时注意展示的是员工本人的薪资,要把d.salary改为e.salary:
SELECT e.first_name ||' with the salary of '|| e.salary AS Employees_and_their_Salary FROM hr.employees e JOIN hr.employees d ON e.manager_id = d.employee_id WHERE e.salary = 2100;
场景3:保留自连接逻辑,筛选直属经理薪资为2100
如果你需要查询直属经理薪资为2100的员工,只要把筛选条件加在经理表d的薪资字段上即可:
SELECT e.first_name ||' with the manager salary of '|| d.salary AS Employees_and_their_Salary FROM hr.employees e JOIN hr.employees d ON e.manager_id = d.employee_id WHERE d.salary = 2100;
内容的提问来源于stack exchange,提问作者user14823524
相关产品推荐
相关产品推荐

