zig*_*ggy 2 sql database oracle join oracle11g
可能重复:
Rownum无法使用查询
我正在运行一些测试如何rownum工作.请有人解释以下查询的输出 - 具体是为什么第三个查询返回0行.
查询1 - 返回2456行
Select rownum, s.id, s.title, sv.version_id
from software s JOIN software_version sv on (s.id = sv.id);
Run Code Online (Sandbox Code Playgroud)
查询2 - 返回100行
Select rownum, s.id, s.title, sv.version_id
from software s JOIN software_version sv on (s.id = sv.id)
where rownum between 1 and 100;
Run Code Online (Sandbox Code Playgroud)
查询3 - 返回0行
Select rownum, s.id, s.title, sv.version_id
from software s JOIN software_version sv on (s.id = sv.id)
where rownum between 101 and 400;
Run Code Online (Sandbox Code Playgroud)
谢谢
rownum仅在获取行并评估其他谓词之后进行评估.这是关键.所以如果你说select from from table where rownum> = 2;
它永远不会工作,因为它的工作原理
open cursor loop
fetch row (rownum is evaluated as the last thing here)
if fetched then rownum = rownum + 1
end cursor
Run Code Online (Sandbox Code Playgroud)
如果你从> 1开始请求rownum那么它永远不会是真的.如果你需要你需要代码,做分页
select *
from (select rownum r, t.*
from your query tables
order by ..)
where r>=101
and rownum <= 400
Run Code Online (Sandbox Code Playgroud)
还请问汤姆