【问题标题】:Does CoderPad not support rank functions in SQL?CoderPad 不支持 SQL 中的排名函数吗?
【发布时间】:2018-07-14 19:59:38
【问题描述】:

我尝试了以下查询:

select first_name,last_name,salary,rank() over (order by salary) as Rank
from employees
order by Rank

我收到以下错误:

ERROR 1064 (42000) at line 1:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '(按薪水排序) 附近使用的正确语法作为排名
来自员工
在第 1 行按 Rank 排序

【问题讨论】:

  • 如错误信息所述,MySQL 不支持窗口函数(版本 8 之前)。
  • 感谢@GordonLinoff。那么,如何获得与早期版本中的排名相同的结果?

标签: mysql sql syntax-error rank


【解决方案1】:

最简单的实现是row_number(),而不是rank()。也许这对你有用:

select first_name, last_name, salary,
       (@rn := @rn + 1) as Rank
from employees e cross join
     (select @rn := 0) params
order by salary;

如果您特别需要rank(),那就有点棘手了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2020-03-07
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    相关资源
    最近更新 更多