select (select distinct salary from Employee order by salary desc limit 1,1) as SecondHighestSalary
理解是:当Employee表里只有一条数据时,内层SQL语句查询不到数据,其返回结果是空,而外层SQL的作用是把内层的查询结果赋值给SecondHighestSalary.
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N = N-1; # 从0开始索引,一定要设置n = n-1
RETURN (
SELECT(
IFNULL(
(SELECT DISTINCT Salary FROM Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET N),NULL)
)
);
END
涉及到写函数了,特别注意!!函数编写多用于高级查询。