我有一个问题
select * from tablename where rownum =1;
Run Code Online (Sandbox Code Playgroud)
此查询给出了所需的结果,但如果我运行
select * from tablename where rownum=2;
Run Code Online (Sandbox Code Playgroud)
然后此查询给出null结果.知道为什么吗?
WHERE rownum=2由于ROWNUM的分配方式,谓词永远不会成立.例如,如果表中有5行,那么算法就会像
由于结果集中没有"第一行",因此不能存在"第二行".您可以在不等式比较中使用ROWNUM,即
SELECT *
FROM table_name
WHERE rownum <= 2
Run Code Online (Sandbox Code Playgroud)
将返回2行.
如果你试图识别表中的"第二行",你可能想要类似的东西
SELECT *
FROM (SELECT t.*,
rank() over (order by some_column) rnk
FROM table_name)
WHERE rnk = 2
Run Code Online (Sandbox Code Playgroud)