oracle rownum和order by的使用

rownum在Oracle中用于生成数据行编号,常用于分页查询。它是一个伪列,在子查询后生成。当与orderby结合时,需注意rownum在排序之前生效,若要按排序编号,需先在子查询中排序。例如,查询tableA的第一行数据需使用嵌套子查询:select*from(selectrownumasrn,*fromtableA)wherern=1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在oracle中,rownum常用来进行分页或查找指定行的数据,简答来说就是通过rownum关键字来生成一个伪列,这个伪列的内容就是查询出的数据的排序编号,这样就可以通过嵌套子查询来使用rownum进行查找指定行的数据了。
举一个例子:

select * from (select rownum as rn, * from tableA) where rn = 1;

这样就是只查询tableA表的第一行数据,注意rownum只能对筛选后的数据表生效,因此这里嵌套了一层子查询,只有子查询先生成伪列之后,才能在外层查询使用where条件。

rownum经常配合其他操作一起使用,这里介绍一下和order by一起使用需要注意的问题。
简单来说,rownum生成伪列的操作在order by排序之前,如果想要先排序再编号的话,就必须在子查询先进行order by排序操作,然后在外层查询进行rownum操作,同样举两个例子。

// 这样rownum生成的序号是对排序之前的数据生效
select rownum as rn , * from tableA order by columnA;
// 正确语句
select rownum as rn, * from (
	select * from tableA order by columnA
	);

如果需要rownum取固定行,则再嵌套一层查询即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值