为什么oracle中rownum只能小于,不能大于

发布网友 发布时间:2022-04-20 14:02

我来回答

2个回答

热心网友 时间:2023-07-16 08:24

当然了
rownum是查询过后才按顺序排的,假如你的条件是rownum>1;那么返回数据的第一条(rownum是1)就不符合要求了,然后第二条数据变成了现在的第一条,结果这一条rownum又变成1了又不符合要求了,以此类推
就没有返回结果。
如果想分页的话
是把rownum作为子表的一个字段(起个别名)如
select
table1.id
from
(select
a1.id
as
id
,a1.rownum
as
rnum
from
a1)
table1
where
table1.rnum>1

热心网友 时间:2023-07-16 08:24

大于不是这么用的,如果想找到从第二行记录以后的记录,当使用rownum>8是查不出记录的,原因是由于rownum是一个总是从1开始的伪列,oracle
认为rownum>
n(n>1的自然数)这种条件依旧不成立,所以查不到记录
sql>
select
rownum,id,name
from
abc
where
rownum
>8;
rownum
id
name
----------
------
---------------------------------------------------
可以使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。
sql>select
*
from(select
rownum
no
,id,name
from
abc)
a
where
no>8;--
除了rownum其他随意写的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com