rownum的用法及注意事项

rownum的用法及注意事项

ROWNUM是Oracle数据库中的一个伪列,它用于为返回的结果集中的每一行分配一个唯一的数字。这个数字表示行的顺序,第一行分配的是1,第二行是2,以此类推。ROWNUM通常用于限制查询返回的行数,特别是在分页查询中非常有用。

ROWNUM的基本使用:
在使用ROWNUM时,需要注意它是在查询过程中动态生成的,而且**始终从1开始。**这意味着,如果你尝试使用ROWNUM = 2这样的条件,你将得不到任何结果,因为没有行会被分配到2。这是因为在Oracle中,只有第一行会被分配ROWNUM为1,之后的每一行都会在前一行的基础上递增。如果第一行不满足条件,那么后续的行也不会被考虑。

例如,如果你想要查询前5行数据,可以使用以下SQL语句:
SELECT * FROM your_table WHERE ROWNUM <= 5;

ROWNUM在分页查询中的应用:
在分页查询中,你可能想要获取第N页的数据。这时,你可以使用ROWNUM结合子查询来实现。首先,你需要一个子查询来获取前N页的数据,然后在外层查询中使用ROWNUM来限制结果集。

例如,如果你想要获取第2页的数据,每页显示5行,你可以使用以下SQL语句:
SELECT * FROM (
SELECT ROWNUM AS row_number, t.*
FROM your_table t
WHERE ROWNUM <= 10
) WHERE row_number > 5;
在这个例子中,子查询首先获取前10行数据,然后外层查询通过row_number > 5来获取第6到第10行,即第2页的数据。

注意事项:
①ROWNUM不能用于>或>=这样的比较操作,因为它是在查询过程中动态生成的。
②在使用ROWNUM进行排序时,你需要注意,ROWNUM是在数据被检索时(select执行后)生成的而不是在数据被排序(order by)后生成的。因此,如果你想要在排序后的数据上应用ROWNUM,你需要使用子查询来先进行排序,然后再应用ROWNUM。
例如,返回id为152127同学的分数最高的前三条记录。
select b.* from (
select a.* from
table1 a where a.id = ‘152127’
order by a.score desc) b
where rownum <= 3;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值