背景:
需求要求获取到根据数据库某一字段进行排序后的编号。简单数来,例如成绩表中,我的语文成绩排名第45,我需要获得这个编号45.
分析:
1、根据相关的字段进行排序。
2、将排序的数据进行编号
3、获取排序编号
实现:(ORACLE)
select no from( 3
select rownum as no,my.id from( 2
select t.id from TABLE t order by t.条件 desc 1
)my
) m where m.id=10001
总结:
貌似第二步跟第一步没什么区别,好像可以合并到一起。实验证明不行。如果将1,2合并:
select rownum as no,my.id from TABLE t order by t.条件 desc
感觉上行得通也是排序后获取编号,但是,实验证明这条语句会优先对原来数据进行编号,然后才排序,导致结果排序正确,但是编号错乱:
编号 name score
5 ee 10
3 cc 8
1 aa 6
2 bb 4
4 dd 2
所以,还是要用3次嵌套才能实现。