MySql之row_number函数实现(一)

MySql之row_number函数实现(一)

MySQL ROW_NUMBER的使用 mysql row number函数_mysql

select Department,Employee,Salary
from
(
select a.Name as Department,b.Name as Employee,b.Salary,b.rank2
from(
select
*,
@rank:=(
case
when @current_id<>DepartmentId then 1
when @currentSalary=Salary then @rank
else @rank+1 end) as rank2,
@currentSalary:=Salary,
@current_id:=DepartmentId
from Employee,(select @rank:=(case when @rank is null then 0 else @rank+0 end),
@current_id:=(case when @current_id is null then 0 else @current_id+0 end),
@currentSalary:=(case when @currentSalary is null then 0 else @currentSalary+0 end))p
order by DepartmentId,Salary desc
)b
left join Department a
on a.id=b.DepartmentId
having rank2<=3
order by b.DepartmentId,rank2
) ab
where Department is not null