LIMIT 子句
LIMIT m
允许从结果中选择前 m
行。
LIMIT n, m
允许在跳过前 n
行之后从结果中选择 m
行。LIMIT m OFFSET n
语法等效。
n
和 m
必须是非负整数。
如果没有 ORDER BY 子句明确对结果进行排序,则结果集的行的选择可能是任意的,并且是非确定性的。
注意
结果集中的行数也可能取决于 limit 设置。
LIMIT ... WITH TIES 修饰符
当您为 LIMIT n[,m]
设置 WITH TIES
修饰符并指定 ORDER BY expr_list
时,您将在结果中获得前 n
或 n,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”。