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之间的行.但是当我尝试执行查询时,它不会检索任何行.
提前致谢
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开始.
| 归档时间: |
|
| 查看次数: |
3335 次 |
| 最近记录: |