Advertisement

mysql排名第一_SQL查询排名第二名的信息

阅读量:

今天看见同学去面试的面试题,查询出某个字段排名第二名的信息,自己就看看
02748f9fd737e0231d3e3f78bec595fa.png

如果是Oracle ,这不就是考察Oracle分页么,以Oracle的emp表为例,根据薪水排名,查询排名第二的员工信息:

select *

from (select t.*, rownum rnfrom (select * from emp e order by sal desc,empno) twhere rownum <= 2) Awhere A.rn >= 2
ee4f7d564c2d9a7d7e78444a90c0aa93.png

(注意Oracle rownum陷阱,不能对Oracle 的rownum 直接进行 rownum> rownum>= rownum = 操作,因为第一条不满足去掉的话,第二条的rownum又成了1,所以永远没有满足条件的记录。所以Oracle分页里边的select 先用 rownum <= xxx ,外边再rownum>=xxx

想要使用的话需要这样,再嵌套一层select :select A.* from (select e.*,rownum rn from emp e)A where A.rn>=13 )

select * from(select e.*,row_number() over(order by sal desc) sal_sort fromemp e)twhere t.sal_sort=2

如果是mysql,就简单了,limit就行:limit 下标是从0开始的,limit 1,1 表示从第2个往后一个,就是第二名了

select * from tb_emp ORDER BY sal desc LIMIT 1,1

欢迎关注个人公众号一起交流学习:
22b0a12001ccd3de8e236f8f0eb25b46.png

全部评论 (0)

还没有任何评论哟~