hive sql 翻页

Hive 提供了类似 Oracle 的 rownum 机制,类似这样(效率比较差):

select * from (select row_number() over (order by create_time desc) as rownum,u.* from user u) mm where mm.rownum between 10 and 15;
between 和 and 分页可以按照下面这个公式 between :( currentPage- 1)pageSize+1 ,and : (currentPagepageSize)

还有一种办法,如果表里有唯一标识字段也可以借助这个字段和 limit 实现。比如:
获取第一页数据:
注:同时需要记录这 10 条中最大的 id 为 preId,作为下一页的条件。

select * from table order by id asc limit 10;

获取第二页数据:
注:同时保存数据中最大的 id 替换 preId。

select * from table where id >preId order by id asc limit 10;

举例:

获取第一页数据:

select * from table where type=2 order by id asc limit 10;

获取第二页数据:

需要获取第一页10条中最大的id为preId,作为下一页的条件。

int preId=select max(id) from table where type=2 order by id asc limit 10;

select * from table where type=2 and id >preId order by id asc limit 10;

获取第三页数据:

需要获取2页20条中最大的id为preId,作为下一页的条件。

int preId=select max(id) from table where type=2 order by id asc limit 20;

select * from table where type=2 and id >preId order by id asc limit 10;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Hive 提供了类似 Oracle 的 rownum 机制,类似这样(效率比较差): select * from ...
    心宇gxy阅读 4,494评论 0 0
  • 一、数据库概述 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户...
    圣贤与无赖阅读 9,335评论 0 4
  • 首先需要注意的是:查询语句select再怎么操作都不会改变表中的数据!! 1、查询语句的语法格式 select 列...
    jimmywife阅读 6,551评论 0 4
  • mysql分页: 从0开始计数 第0页: select * from student limit 0,10; 第1...
    quixotic阅读 832评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,193评论 16 22