【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
 )

 

 
posted @ 2020-05-19 15:03  Flora1014444  阅读(553)  评论(0编辑  收藏  举报