说明
SparkSQL的 limit 只支持 TopN 功能,不能像 Hive、MySQL 那样传2个参数,实现分页
分页
通过 开窗 row_number() 函数实现
with 语句
语法
with tbl as (
select *,row_number() over (order by 主键, 排序字段 asc) as rownum from 表名
)
select * from tbl where 开始行数 <= rownum and rownum <= 结束行数
例子
with tbl as (
select *,row_number() over (order by empno, empno asc) as rownum from emp
)
select * from tbl where 1 <= rownum and rownum <= 5
子语句
语法
select * from
(
select *,row_number() over (order by 主键, 排序字段 asc) as rownum from 表名
) temp
where 开始行数 <= rownum and rownum <= 结束行数
例子
select * from
(
select *,row_number() over (order by empno, empno asc) as rownum from emp
) temp
where 1 <= rownum and rownum <= 5
参考:
http://www.manongjc.com/detail/16-ooknoousqyugicc.html