跳至主要内容

LIMIT 子句

LIMIT m 允许从结果中选择前 m 行。

LIMIT n, m 允许在跳过前 n 行之后从结果中选择 m 行。LIMIT m OFFSET n 语法等效。

nm 必须是非负整数。

如果没有 ORDER BY 子句明确对结果进行排序,则结果集的行的选择可能是任意的,并且是非确定性的。

注意

结果集中的行数也可能取决于 limit 设置。

LIMIT ... WITH TIES 修饰符

当您为 LIMIT n[,m] 设置 WITH TIES 修饰符并指定 ORDER BY expr_list 时,您将在结果中获得前 nn,m 行,以及所有具有相同 ORDER BY 字段值的行,这些字段值等于 LIMIT n 的位置 n 处的行,以及 LIMIT n,m 的位置 m 处的行。

此修饰符也可以与 ORDER BY ... WITH FILL 修饰符 结合使用。

例如,以下查询

SELECT * FROM (
SELECT number%50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0,5

返回

┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘

但是,在应用 WITH TIES 修饰符之后

SELECT * FROM (
SELECT number%50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0,5 WITH TIES

它返回另一个行集

┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘

因为行号 6 的字段 n 的值与行号 5 相同,值为“2”。