首页/数据/NoSQL 速查/LIMIT BY 分组取前 N
ClickHouse56 条

LIMIT BY 分组取前 N

LIMIT BY 对每个分组各取前若干行:常配合 ORDER BY 实现按维度取最近/最高记录,比排序后过滤的结果更符合业务直觉。

NoSQL 速查数据更新于 2026-10-12
语法LIMIT [offset,] n BY expr1 [, expr2 ...]
语义分组内按当前 ORDER BY 的顺序取前 n 行
叠加末尾可再写普通 LIMIT 限制总返回行数

示例

示例
-- 每个 region 取最近 3 条记录
SELECT region, ts, value
FROM metrics
ORDER BY ts DESC
LIMIT 3 BY region;

-- 总共只返回 20 行
SELECT region, ts, value
FROM metrics
ORDER BY ts DESC
LIMIT 3 BY region
LIMIT 20;
LIMIT BY 的分组结果不保证按组输出,外层再 ORDER BY 才有稳定展示顺序。

易错点

  • LIMIT BY 的分组列要写在 SELECT 里或在分组表达式内,否则容易得到非预期分组
  • 对高基数列做 LIMIT BY 会生成大量分组,注意内存与耗时

数据来源与参考

  • ClickHouse Docs: LIMIT BY clause
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌