SELECT title as "Page 1", column1, column2, ... FROM table
ORDER BY column1 LIMIT 1000 OFFSET 0;
SELECT title as "Page 2", column1, column2, ... FROM table
ORDER BY column1 LIMIT 1000 OFFSET 1000;
SELECT title as "Page 3", column1, column2, ... FROM table
ORDER BY column1 LIMIT 1000 OFFSET 2000;
4条答案
按热度按时间jgwigjjp1#
我不知道你想达到什么目的,但是。。。
仅当您使用的配置单元版本高于2.0.0时,才会返回查询结果集中的1001和2001记录
(https://issues.apache.org/jira/browse/hive-11531)
j1dl9f462#
您可以使用行数窗口功能来设置范围限制。
下面的查询将只产生表中的前20条记录
使用between运算符指定范围
将行从20提取到40,然后增加下限/上限值
iqih9akk3#
limit子句用于设置结果集中行数的上限。由于此hql子句的用法不正确,因此出现语法错误。
查询可以按以下方式编写,以返回不超过2000行:
您也可以这样写以返回不超过1000行:
但是,不能将两者合并到同一个limit参数中。limit参数的值必须为常量。
我将试着对这些信息进行一点扩展,以帮助解决您的问题。如果您试图“分页”您的结果,以下可能是有用的。
首先,我建议不要使用hql进行分页,在大多数情况下,在应用程序逻辑端(查询大型结果集、缓存所需内容、使用应用程序逻辑分页)可以更有效地实现这种分页。如果您别无选择只能拉出行的范围,那么可以通过limit、order by和offset子句的组合来获得所需的效果。
限制:这会将结果集限制为最大行数
排序方式:这将根据一列或多列对结果集进行排序/排序
偏移量:这将在表中逻辑第一项之后的某一行开始结果集。
您可以组合这三个子句来有效地查询表的“页面”。例如,以下三个查询显示如何从表中获取前3个数据块,其中每个数据块包含1000行,目标表的“column1”用于确定逻辑顺序。
每个查询都将“column1”声明为排序值,并带有order by。由于limit子句,查询将返回不超过1000行。每个结果集将从不同的行开始,因为每个查询的偏移量都以“页面大小”递增。
4ioopgfo4#
Limit
in-hive随机给出n个记录。不是打印一系列的记录。你可以用order by
结合极限来得到你想要的