OFFSET 子句
描述
OFFSET
子句用于指定在开始返回由
SELECT
语句返回的行之前要跳过的行数。通常,此子句与
ORDER BY
一起使用,以确保结果是确定性的。
语法
OFFSET 整数表达式
参数
-
integer_expression
指定一个可折叠的表达式,该表达式返回一个整数。
示例
CREATE TABLE person (name STRING, age INT);
INSERT INTO person VALUES
('Zen Hui', 25),
('Anil B', 18),
('Shone S', 16),
('Mike A', 25),
('John A', 18),
('Jack N', 16);
-- 跳过前两行。
SELECT name, age FROM person ORDER BY name OFFSET 2;
+-------+---+
| name|age|
+-------+---+
| John A| 18|
| Mike A| 25|
|Shone S| 16|
|Zen Hui| 25|
+-------+---+
-- 跳过前两行并返回接下来的三行。
SELECT name, age FROM person ORDER BY name LIMIT 3 OFFSET 2;
+-------+---+
| name|age|
+-------+---+
| John A| 18|
| Mike A| 25|
|Shone S| 16|
+-------+---+
-- 函数表达式作为OFFSET的输入。
SELECT name, age FROM person ORDER BY name OFFSET length('SPARK');
+-------+---+
| name|age|
+-------+---+
|Zen Hui| 25|
+-------+---+
-- 不可折叠的表达式作为OFFSET的输入是不允许的。
SELECT name, age FROM person ORDER BY name OFFSET length(name);
org.apache.spark.sql.AnalysisException: 该 offset 表达式 必须 求值 为 一个 常数 值 ...