我正在努力争取每个雇员的最高工资。

select e.first_name, e.last_name, t.title, s.salary
from employees e inner join titles t on e.emp_no = t.emp_no
inner join salaries s on e.emp_no = s.emp_no
where s.salary in (select max(salary) from salaries group by emp_no);

但我一直在为每个员工拿到所有的工资,而不是最高工资。我在这里遗漏了什么?
顺便说一下,我用的是这里的示例employee DB。
https://github.com/datacharmer/test_db

最佳答案

使用outer query中的引用使其成为correlated子查询:

select e.first_name, e.last_name, t.title, s.salary
from employees e inner join
     titles t
     on e.emp_no = t.emp_no inner join
     salaries s
     on e.emp_no = s.emp_no
where s.salary = (select max(s1.salary) from salaries s1 where s1.emp_no = e.emp_no);

关于mysql - 获得每位员工的最高薪水,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54407170/

10-12 17:19