问题:
编写SQL查询,从Employee表中获得第9位最高薪资。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+例如,在上面的雇员表中,n=2的第n最高工资是200。如果没有第n个最高工资,那么查询应该返回null。
+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200 |
+------------------------+My查询:
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错误:
Line 5: SyntaxError: near '('getNthHighestSalary','(',N,')')
FROM (SET @i := 0;
SELECT (@i :='发布于 2018-11-12 20:22:55
不能以这种方式初始化@i变量。通常,您可以在查询之前用这种SET语句初始化它,或者在查询中初始化它,比如:.... FROM Employee, (@i := 0) AS init ....。
另外,您不能计算结果字段的别名,或者实际上的任何别名;它不是当前错误的来源,而且函数无论如何也不会返回该别名;但我认为它值得注意。我很惊讶它居然没有在第一次犯错。
https://stackoverflow.com/questions/53269480
复制相似问题