メインコンテンツへスキップ
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% の行)
  • 小数は、0 より大きく 1 より小さい Float64 値である必要があります。
  • 小数で指定した行数は、次の整数に切り上げられます。

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 ではサポートされていません。
この修飾子は、ORDER BY ... WITH FILL 修飾子と組み合わせて使用できます。

注意事項

非決定論的な結果: ORDER BY 句がない場合、返される行は不定であり、クエリを実行するたびに異なる可能性があります。 サーバー側の制限: 返される行数は、limit 設定の影響を受ける場合もあります。

関連項目

  • LIMIT BY — 値の各グループごとに行数を制限します。各カテゴリ内の上位 N 件の結果を取得する場合に便利です。
最終更新日 2026年6月10日