首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我对最高工资的查询有语法错误?

为什么我对最高工资的查询有语法错误?
EN

Stack Overflow用户
提问于 2018-11-12 20:18:16
回答 1查看 140关注 0票数 0

问题:

编写SQL查询,从Employee表中获得第9位最高薪资。

代码语言:javascript
复制
+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

例如,在上面的雇员表中,n=2的第n最高工资是200。如果没有第n个最高工资,那么查询应该返回null。

代码语言:javascript
复制
+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200                    |
+------------------------+

My查询:

代码语言:javascript
复制
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN(

    SELECT NT.Salary as CONCAT('getNthHighestSalary','(',N,')')
    FROM (SET @i := 0;
          SELECT (@i := @i + 1) as Index, Id, Salary
          FROM Employee
          ORDER BY Salary DESC) AS NT
    WHERE NT.Index = N);
END

错误:

代码语言:javascript
复制
Line 5: SyntaxError: near '('getNthHighestSalary','(',N,')')
    FROM (SET @i := 0;
          SELECT (@i :='
EN

回答 1

Stack Overflow用户

发布于 2018-11-12 20:22:55

不能以这种方式初始化@i变量。通常,您可以在查询之前用这种SET语句初始化它,或者在查询中初始化它,比如:.... FROM Employee, (@i := 0) AS init ....

另外,您不能计算结果字段的别名,或者实际上的任何别名;它不是当前错误的来源,而且函数无论如何也不会返回该别名;但我认为它值得注意。我很惊讶它居然没有在第一次犯错。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53269480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档