在关键字之间使用时,row num不显示任何行

Sma*_*003 2 sql oracle between oracle11g rownum

当我使用rownum和关键字之间时,查询不会返回任何行.任何人都可以解释为什么查询不检索任何行?

select * from cus where rownum between 2 and 6;
Run Code Online (Sandbox Code Playgroud)

我只是想检查当rownum与关键字之间使用时是否会起作用.所以,我只是尝试了上面的查询来显示介于2和6之间的行.但是当我尝试执行查询时,它不会检索任何行.

提前致谢

cod*_*eim 7

Oracle rownum从1开始,所以如果你说,你永远不会得到第一个rownum between 2 and N.

它需要一行来"启动"rownum伪列序列,因此通过消除标准中的rownum 1,可以消除所有rownum(或者每行基本上都有rownum 0).

像这样看待它.在数据库向您返回行之前,您不会获得ROWNUM.任何标准的第一行始终为ROWNUM 1.

现在,您可以使用的技巧是使用子查询.每个子查询都有自己的rownum,如果你将它别名为另一个列名,你可以将它保存到外部查询中,并根据需要对其进行处理.因此,如果您要实现结果集的分页,通常将rownum从内部结果别名为rownum_到外部子查询,以限制BETWEEN.

select * from 
  (select t.*, rownum as rownum_ from t)
where rownum_ between 2 and 6
Run Code Online (Sandbox Code Playgroud)

但请注意,外部结果集将具有自己的rownum,因此您可以执行以下操作:

select t2.*, rownum from 
  (select a, b, rownum as rownum_ from t) t2
where rownum_ between 2 and 6
Run Code Online (Sandbox Code Playgroud)

您将看到rownum最终结果仍然从1开始,但您的内部结果将从rownum_2开始.