您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

select t2.*, rownum from 
  (select a, b, rownum as rownum_ from t) t2
where rownum_ between 2 and 6

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

其他 2022/1/1 18:38:06 有453人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶