【问题标题】:Query with "limit" not returning results [duplicate]使用“限制”查询不返回结果[重复]
【发布时间】:2013-03-05 12:24:21
【问题描述】:

这是我的查询:

select * 
  from (SELECT "MYTABLE".* FROM "MYTABLE" ORDER BY "COMPANY" ASC, "SURNAME" ASC) 
 where ROWNUM between 0 and 20

按预期工作,但是当我尝试获取接下来的 20 条记录时:

select * 
  from (SELECT "MYTABLE".* FROM "MYTABLE" ORDER BY "COMPANY" ASC, "SURNAME" ASC) 
 where ROWNUM between 20 and 40

结果集为空?为什么会这样?我该怎么做才能获得接下来的 20 条记录?

【问题讨论】:

标签: sql oracle


【解决方案1】:

您必须嵌套 rownum ,因为 rownum 仅在获取行后才会增加。所以说rownum > 1 永远不会返回一行。 例如

select *
  from (select a.*, rownum r 
          from (select mytable.*
                  from mytable 
                 order by company asc, surname asc) a
         where rownum <= 40
       )
 where r >= 20
 order by r;

或者你可以使用row_number()分析

select *
  from (select mytable.*, row_number() over (order by company asc, surname asc) rn
          from mytable) 
 where rn between 20 and 40
 order by rn;

【讨论】:

    猜你喜欢
    • 2013-07-06
    • 2016-07-12
    • 1970-01-01
    • 2011-01-19
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多