LIMIT 子句
描述
LIMIT
子句用于限制
SELECT
语句返回的行数。通常,这个子句与
ORDER BY
一起使用,以确保结果是确定性的。
语法
LIMIT { 所有 | 整数表达式 }
参数
-
全部
如果指定,则查询返回所有行。换句话说,如果指定了此选项,则不应用限制。
-
整数表达式
指定一个返回整数的可折叠表达式。
示例
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 LIMIT 2;
+------+---+
| name|age|
+------+---+
|Anil B| 18|
|Jack N| 16|
+------+---+
-- 指定 LIMIT 的 ALL 选项返回所有行。
SELECT name, age FROM person ORDER BY name LIMIT ALL;
+-------+---+
| name|age|
+-------+---+
| Anil B| 18|
| Jack N| 16|
| John A| 18|
| Mike A| 25|
|Shone S| 16|
|Zen Hui| 25|
+-------+---+
-- 将函数表达式作为 LIMIT 的输入。
SELECT name, age FROM person ORDER BY name LIMIT length('SPARK');
+-------+---+
| name|age|
+-------+---+
| Anil B| 18|
| Jack N| 16|
| John A| 18|
| Mike A| 25|
|Shone S| 16|
+-------+---+
-- 非可折叠表达式作为 LIMIT 的输入是不允许的。
SELECT name, age FROM person ORDER BY name LIMIT length(name);
org.apache.spark.sql.AnalysisException: 该 limit 表达式 必须 评估 为 常量 值 ...