【SQL】取第n个
第一个或最后一个:
max min 或者叠加order by xx desc
第n个:
用到order by
limit 起始位置,取得数据条数 一定记得不加括号!
比如第二名 limit 1,1 从第一个开始,取一个。默认从第零个开始
不用order by
第二个:
max(xxx) where xxx not in(<) (select max(xxx))
筛掉max之后的max就是第二了
通用型模板
使用一个表自连接,选出所有大于他的然后进行分组,第二多就是说 一共有一个大于它。由于可能同一个工资有多个纪录,加一个去重distinct
第n多就是有n-1个大于它
select e.emp_no,s.salary,e.last_name,e.first_name from employees e join salaries s on e.emp_no=s.emp_no and s.to_date='9999-01-01' and s.salary = ( select s1.salary from salaries s1 join salaries s2 on s1.salary<s2.salary and s1.to_date='9999-01-01' and s2.to_date='9999-01-01' group by s1.salary having count(distinct s2.salary)=1 )