首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

获取oracle中待查询数据排序后的排名解决方法

2012-02-06 
获取oracle中待查询数据排序后的排名eg:create table dml.cases(numNUMBER primary key, --序号nameVARCHA

获取oracle中待查询数据排序后的排名
eg:
create table dml.cases(
numNUMBER primary key, --序号
nameVARCHAR2(50), --案例名称
introVARCHAR2(100), --案例简介
);

现在希望获得num=10 的数据 在按num 降序排列后的排名,也就是第几个


[解决办法]

select * from (
select a.*,row_number()over(order by num desc) as no from cases a
)
where no=10
[解决办法]

SQL code
select rownum rn,t.* from (select * from dml.cases order by num desc)  twhere t.num=10;
[解决办法]
不能用rownum,因为rownum必须包含rownum=1的值,否则取不到

可以用分析函数row_number()帮你解决问题
[解决办法]
SQL code
--第10个数据SELECT *  FROM (SELECT rownum rn, t.* FROM (SELECT * FROM dml.cases ORDER BY num DESC) t) WHERE rn = 10;
[解决办法]
create table dml.cases(
num NUMBER primary key, --序号
name VARCHAR2(50), --案例名称
intro VARCHAR2(100), --案例简介
);

再补充个问题啊,就是要查按num 降序排列第十个数据怎么写,谢谢

1 select count(*) from dml.cases where num>10;
2 补充问题:select * from dml.cases where rowid=10 order by dese;
[解决办法]
 
1 select count(*)+1 from dml.cases where num>10;
2 补充问题:select * from dml.cases where rowid=10 order by dese;

热点排行