php—对特殊列进行排序

9njqaruj  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(354)

我有一张table,上面有员工的身份证,姓名,薪水。我想根据薪水给员工排名。
表:员工

id   employee_name  employee_salary
------------------------------------
 1   Martin            3500
 2   Su                4000
 3   Alex              3500
 4   Flora             8000

我想要的结果是

id   employee_name   employee_salary   Rank
--------------------------------------------
 1   Martin            3500             3
 2   Su                4000             2
 3   Alex              3500             3
 4   Flora             8000             1

我尝试使用rank()函数,查询是

select 
    salary, 
    rank() over (order by employee_salary desc) AS Rank 
from employee

这会引发mysql错误:
分析中发现3处错误。
以前发现了一个别名(接近“等级”位置61)
应为别名(接近“”,位置60)
意外标记(在61号位置接近“军衔”
查询有问题吗?

ajsxfq5m

ajsxfq5m1#

尝试此查询

SELECT id, employee_name, employee_salary, @rank := @rank + 1 AS Employee_rank FROM employee e, (SELECT @rank := 0) r ORDER BY employee_salary desc

结果是这样的

cbwuti44

cbwuti442#

不使用变量就可以得到

select a.*,
  (select count(*) + 1 
   from employee 
   where employee_salary > a.employee_salary) as rank
from employee a

演示
mysql 8支持窗口函数

相关问题