前言

  
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最好写一个临时表,不然每次都排序很耗性能


Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐