Sql 从Oracle表中获取1000行集
我想使用查询一次选择1000行:Sql 从Oracle表中获取1000行集,sql,oracle,select,Sql,Oracle,Select,我想使用查询一次选择1000行: SELECT * FROM MEMBERID_1M WHERE ROWNUM <1000 如何在for循环中从此表中获取下一组1000行?我建议您使用如下行数函数:我的id是您的PK SELECT M.* FROM ( SELECT MEMBERID_1M.*, ROW_NUMBER() OVER (ORDER BY id) As rn FROM MEMBERID_1M ) M WHERE (rn <= 1000) 复
SELECT * FROM MEMBERID_1M WHERE ROWNUM <1000
如何在for循环中从此表中获取下一组1000行?我建议您使用如下行数函数:我的id是您的PK
SELECT M.*
FROM (
SELECT MEMBERID_1M.*, ROW_NUMBER() OVER (ORDER BY id) As rn
FROM MEMBERID_1M ) M
WHERE
(rn <= 1000)
复制
只有一种相当复杂的方法可以做到这一点,这对甲骨文来说是一种真正的痛苦。他们应该只执行一个限制/抵消条款
rownum在where子句选择行后被赋值,因此rownum必须始终以1开头。其中rownum>x将始终计算为false
此外,rownum在排序完成之前被分配,因此rownum的顺序将与order by的顺序不同
您可以使用子选择来解决这两个问题:
select a,b,c, rn from
( select a,b,c, rownum rn from
( select a,b,c from the_table where x = ? order by c)
where rownum < Y)
where rn > X
如果不需要排序,但只需要排序,则可以简化为
select a,b,c, rn from
( select a,b,c, rownum rn from the_table where rownum < Y )
where rn > X
您应该在服务器端进行分页。请使用此查询 更多详情请参考此链接
请提及Oracle版本。标准版一-Oracle 11gIt给出:ORA-00923:FROM关键字未找到预期的00923。00000-在预期的*原因:*处找不到FROM关键字:*操作:第10行列处出错:13I在内部选择中忘记在*之前使用表名;。
select a,b,c, rn from
( select a,b,c, rownum rn from
( select a,b,c from the_table where x = ? order by c)
where rownum < Y)
where rn > X
select a,b,c, rn from
( select a,b,c, rownum rn from the_table where rownum < Y )
where rn > X
select *
from
( select rownum rnum, a.*
from (SELECT * FROM MEMBERID_1M ) a
where rownum <= :M )
where rnum >= :N;