hive limit分页查询、row_number()分页查询

本文介绍了在不同版本的Hive中如何进行分页查询。对于支持`LIMIT m-1, n`语法的Hive,可以直接使用此语句获取指定范围的数据。而在不支持该语法的版本中,可以通过`row_number()`窗口函数实现分页。通过创建临时表并结合`row_number()`进行筛选,可以有效地获取第m到m+n行的数据,注意使用窗口函数时为了性能考虑应将其写入临时表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  
hive执行limit语句报错,分页失败
在这里插入图片描述


1. 支持limit m-1, n语法的hive版本

SELECT * FROM 表名 LIMIT n;     	//检索前 n 个记录行
SELECT * FROM 表名 LIMIT m-1, n; 	//检索 m行 到 m+n行

如:
在这里插入图片描述


2. 不支持limit m-1, n语法,使用row_number()函数

2.1 row_number()的使用

  (1)按照deptno分组,不排序

select *, row_number()over(partition by deptno) from emp;

在这里插入图片描述

  (2)按照empno进行排序,不分组,排序列命名rownum

select * ,row_number() over (order by empno) as rownum  from emp;

在这里插入图片描述

  (3)按照empno排序,同时根据deptno进行分组

select * ,row_number() over (partition by deptno order by empno) as rownum  from emp;

在这里插入图片描述

2.2 分页

  从原表中查询第6到第10行数据

select * from (select * ,row_number() over () as rownum  from emp) t where t.rownum between 6 and 10;

在这里插入图片描述

注:

  row_number最好写一个临时表,不然每次都排序很耗性能


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但行益事莫问前程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值