我试图在不使用分组依据的情况下获得与此查询相同的结果。
SELECT emp_no,salary, max(to_date) to_date FROM employees.salaries
group by emp_no;
您可以使用相关子查询进行过滤:
select s.*
from employees.salaries s
where s.to_date = (
select max(s1.to_date)
from employees.salaries s1
where s1.emp_no = s.emp_no and s1.salary = s.salary
);
或者,在MySQL 8.0中,您可以使用row_number()
:
select *
from (
select s.*, row_number() over(partition by emp_no, salary order by to_date desc) rn
from employees.salaries s
) t
where rn = 1;