Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

LIMIT

LIMIT 句は、クエリ結果として返される行数を制御します。

基本構文

先頭の行を取得:

LIMIT m

結果の先頭 m 行を返します。結果が m 行未満の場合は、すべてのレコードを返します。

TOP の代替構文 (MS SQL Server 互換) :

-- SELECT TOP 数値|パーセント カラム名 FROM テーブル名
SELECT TOP 10 * FROM numbers(100);
SELECT TOP 0.1 * FROM numbers(100);

これは LIMIT m と同等で、Microsoft SQL Server のクエリとの互換性のために使用できます。

OFFSET を指定した SELECT:

LIMIT m OFFSET n
-- または同等の表記:
LIMIT n, m

先頭のn行をスキップし、その次のm行を返します。

どちらの形式でも、nmは 0 以上の整数である必要があります。

負の LIMIT

負の値を使用すると、result set の末尾から行を選択できます。

構文 結果
LIMIT -m 末尾の m
LIMIT -m OFFSET -n 末尾の n 行をスキップしたあとの末尾の m
LIMIT m OFFSET -n 末尾の n 行をスキップしたあとの先頭の m
LIMIT -m OFFSET n 先頭の n 行をスキップしたあとの末尾の m

LIMIT -n, -m 構文は LIMIT -m OFFSET -n と同等です。

小数指定の制限

0 から 1 の間の小数値を使用して、行の割合を指定できます。

構文 結果
LIMIT 0.1 先頭の 10% の行
LIMIT 1 OFFSET 0.5 中央の行
LIMIT 0.25 OFFSET 0.5 第3四分位数 (先頭の 50% をスキップした後の 25% の行)

LIMIT の種類を組み合わせる

通常の整数と、小数または負の OFFSET を組み合わせて使用できます。

LIMIT 10 OFFSET 0.5    -- 中間地点から始まる10行
LIMIT 10 OFFSET -20    -- 最後の20行をスキップした後の10行

LIMIT … WITH TIES

WITH TIES 修飾子は、制限された最後の行と同じ ORDER BY 値を持つ追加の行も含めます。

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 行目は、5 行目と同じ値 (2) であるため含まれます。

OFFSET を OFFSET キーワードで指定した場合も同様です。

SELECT * FROM (
    SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 3 OFFSET 2 WITH TIES
┌─n─┐
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘

最初の2行をスキップして3行を取得すると、通常は 1, 1, 2 が返されますが、2つ目の 2 も最後の行と同順位のため含まれます。

WITH TIES は負の limit と offset でも機能します。最初に選択された行と同じ ORDER BY 値を持つ追加の行も含めます。

SELECT number % 3 AS n FROM numbers(15)
ORDER BY n LIMIT -4 OFFSET -3 WITH TIES
┌─n─┐
│ 1 │
│ 1 │
│ 1 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘

WITH TIES がない場合、結果は 1, 1, 2, 2 になります。WITH TIES を使用すると、最初に選択された行と同順位であるため、値 1 の行がさらに 3 行含まれます。

この修飾子は、ORDER BY ... WITH FILL 修飾子と組み合わせて使用できます。

注意事項

非決定論的な結果: ORDER BY 句がない場合、返される行は不定であり、クエリを実行するたびに異なる可能性があります。

サーバー側の制限: 返される行数は、limit 設定の影響を受ける場合もあります。

関連項目

  • LIMIT BY — 値の各グループごとに行数を制限します。各カテゴリ内の上位 N 件の結果を取得する場合に便利です。
Navigation