如何使用"rownum“关键字从任何表中检索第三行(我使用的是oracle-10g)
发布于 2010-08-11 18:56:14
当查询产生行时,Oracle按顺序为ROWNUM赋值-因此,获取的第一行获取ROWNUM=1,获取的第二行获取ROWNUM=2,获取的第三行获取ROWNUM,依此类推。注意,对于要分配给ROWNUM的行,必须先获取前面的两行。这就是您的查询不返回任何行的原因。您正在向数据库请求获取的第三行--但是第1行和第2行从未被获取过。
要进行演示,请尝试运行以下查询:
SELECT S.* FROM SALARY S; -- Should return all rows
SELECT ROWNUM, S.* FROM SALARY S; -- Should return all rows with ROWNUM prepended
SELECT ROWNUM, S.* FROM SALARY WHERE ROWNUM=3; -- Should return no rows要解决您的问题,请尝试以下操作:
SELECT ROW_NUMBER FROM
(SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S)
WHERE ROW_NUMBER = 3;分享和享受。
发布于 2010-08-11 18:33:31
你可以像这样使用need to do命令
select rnum,sal
from
( select sal, rownum rnum
from salary
order by sal desc )
where rnum = 3;直到谓词阶段之后才会赋值rownum,因此rownum = 3将始终为false。使用CTE或派生表,然后可以从外部访问rownum。
发布于 2012-10-24 19:18:00
SELECT ROW_NUMBER FROM (SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S) WHERE ROW_NUMBER = 3; 这是不正确的。这将始终返回“3”,因为您选择的是ROW_NUMBER。
应该是"select *",如下所述:
select * from (select rownum as row_number, s.* from salary s) where row_number = 3;https://stackoverflow.com/questions/3457370
复制相似问题