rownum = 5不返回任何数据但表有10行

时间:2017-04-12 08:54:51

标签: sql oracle

我有一个表emp(ename,eid,did,sal,sex),其中column是另一个表dept(did,dname)的外键。

我希望得到公司的第n个人以及人的详细信息。 我正在执行以下查询(我的表有10行)

    SELECT rownum,vi.* FROM
   (SELECT * FROM emp ORDER BY sal desc) vi
   WHERE ROWNUM >5;

当我执行rownum> 5或rownum = 5时获取“无数据” 但是如果我执行rownum< 5那么我会显示4行。

。当我做rownum = n

时我想要数据

3 个答案:

答案 0 :(得分:0)

你能试试吗?

SELECT * FROM 
(SELECT ROWNUM AS X, vi.* 
  FROM  (SELECT * FROM emp ORDER BY sal desc) vi
 ) B 
WHERE X>5
;

答案 1 :(得分:0)

看到这篇文章 https://book.cakephp.org/2.0/en/development/routing.html#connecting-routes

在您的示例中,您可以使用row_number函数

select * from (
select row_number() over (order by col1 desc) rn, * from test_table 
)q where rn = 5

答案 2 :(得分:0)

假设你只想要第5行,你可以试试这个:

select *
from (
    select rownum as rn,
        vi.*
    from (
        select *
        from emp
        order by sal desc
        ) vi
    where ROWNUM <= 5
    ) t
where rn = 5;

或使用窗口函数:

select *
from (
    select row_number() over (order by sal desc) as rn,
        vi.*
    from emp vi
    ) t
where rn = 5;

如果您使用12c +,则可以使用前n个查询:

select *
from emp
order by sal desc
offset 4 rows
fetch first 1 row only;