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)