CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
RETURN (
select e1.Salary from
(select distinct Salary fromEmployee) e1
where
(
select count(*) from
(select distinct Salary from Employee) e2
where e2.Salary>e1.Salary)=N-1
);
END
select count(*) from
(select distinct Salary from Employee) e2
where e2.Salary>e1.Salary)
相当于 遍历e1里的所有的salary
然后列出e2里大于e1中每一个salary的所有记录
当N-1=0时 e1.salary是最大值
当N-1=1时 e1.salary是第二大值
。。。。。。
自行脑补测试