CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
RETURN (
SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT N-1,1
);
END
此查询在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
请解释两个陈述之间的区别。当我设置M = N-1时,当N = 0时m也将为负,它给出以下异常
Line 6: SyntaxError: near '-1,1
);
END'
答案 0 :(得分:1)
我迟到了,但我也在努力解决这个问题。花了几个小时调试这个。您始终可以在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
限制中的参数也令人困惑。在某些情况下,不支持offset
。这有一个简单的例子。
limit a,b;
我们可以阅读以上内容
从a开始并在b个条目后停止。
干杯!
答案 1 :(得分:0)
我不确定这是否有帮助。但是,这似乎来自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
希望这会有所帮助!
答案 2 :(得分:0)
我的回答感谢@George Hayward
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
set N = N-1;
RETURN (
# Write your MySQL query statement below.
IFNULL(
(SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT N,1),
NULL)
);
END