LIMIT BY 子句
带有 LIMIT n BY expressions
子句的查询为每个独特的 expressions
值选择前 n
行。LIMIT BY
的键可以包含任意数量的 expressions。
ClickHouse 支持以下语法变体:
LIMIT [offset_value, ]n BY expressions
LIMIT n OFFSET offset_value BY expressions
在查询处理过程中,ClickHouse 按照排序键选择数据。排序键通过 ORDER BY 子句显式设置,或作为表引擎的属性隐式设置(只有在使用 ORDER BY 时才能保证行的顺序,否则由于多线程,行块将不会有序)。然后,ClickHouse 应用 LIMIT n BY expressions
,并返回每个独特的 expressions
组合的前 n
行。如果指定了 OFFSET
,那么对于属于独特 expressions
组合的每个数据块,ClickHouse 从块的开头跳过 offset_value
行,并返回最多 n
行作为结果。如果 offset_value
大于数据块中的行数,ClickHouse 将从块中返回零行。
如果您希望在 LIMIT BY
子句中使用列编号而不是列名,请启用设置 enable_positional_arguments。
示例
示例表:
查询:
SELECT * FROM limit_by ORDER BY id, val LIMIT 2 OFFSET 1 BY id
查询将返回相同的结果。
以下查询返回每对 domain, device_type
的前 5 个引荐来源,总计最多 100 行(LIMIT n BY + LIMIT
)。