替代GROUP BY MySql

问题描述 投票:0回答:1

我试图在不使用分组依据的情况下获得与此查询相同的结果。

SELECT emp_no,salary, max(to_date) to_date FROM employees.salaries

group by emp_no;

mysql sql group-by greatest-n-per-group
1个回答
0
投票

您可以使用相关子查询进行过滤:

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;
© www.soinside.com 2019 - 2024. All rights reserved.