Ame*_*ain 5 mysql runtime-error
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
RETURN (
SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT N-1,1
);
END
Run Code Online (Sandbox Code Playgroud)
当M = 0变为-1时,该查询会给出异常,但是当我这样写时
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;
RETURN (
SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT M,1
);
END
Run Code Online (Sandbox Code Playgroud)
请解释这两个语句之间的区别。当我设置M = N-1时,当N = 0时m也会为负,因此出现以下异常
Line 6: SyntaxError: near '-1,1
);
END'
Run Code Online (Sandbox Code Playgroud)
我不确定这是否有帮助。但这看起来像是 Leet Code 中的问题(https://leetcode.com/problems/nth-highest-salary)。我运行了下面的代码,它对我有用。
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;
RETURN (
select distinct
Salary
from
Employee
Order by 1 desc
limit M, 1
);
END
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
我在这方面迟到了,但我也为这个问题苦苦挣扎。花了几个小时调试这个。您始终可以在条款中检查此条件where。检查下面的查询。
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M = -1;
RETURN (
select distinct salary from employee where M > 0 order by salary desc limit M,1
);
END
Run Code Online (Sandbox Code Playgroud)
limit 中的参数也很混乱。在某些情况下offset不支持。有一个简单的例子。
limit a,b;
Run Code Online (Sandbox Code Playgroud)
我们可以将上面的内容读作
从 a 开始,在 b 个条目之后停止。
干杯!
| 归档时间: |
|
| 查看次数: |
1386 次 |
| 最近记录: |