> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> LIMIT 句の説明

# LIMIT 句

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

<div id="basic-syntax">
  ## 基本構文
</div>

**先頭の行を取得:**

```sql theme={null}
LIMIT m
```

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

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

```sql theme={null}
-- SELECT TOP 数値|パーセント カラム名 FROM テーブル名
SELECT TOP 10 * FROM numbers(100);
SELECT TOP 0.1 * FROM numbers(100);
```

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

**OFFSET を指定した SELECT:**

```sql theme={null}
LIMIT m OFFSET n
-- または同等の表記:
LIMIT n, m
```

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

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

<div id="negative-limits">
  ## 負の LIMIT
</div>

負の値を使用すると、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` と同等です。

<div id="fractional-limits">
  ## 小数指定の制限
</div>

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

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

<Note>
  * 小数は、0 より大きく 1 より小さい [Float64](/ja/reference/data-types/float) 値である必要があります。
  * 小数で指定した行数は、次の整数に切り上げられます。
</Note>

<div id="combining-limit-types">
  ## LIMIT の種類を組み合わせる
</div>

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

```sql theme={null}
LIMIT 10 OFFSET 0.5    -- 中間地点から始まる10行
LIMIT 10 OFFSET -20    -- 最後の20行をスキップした後の10行
```

<div id="limit--with-ties-modifier">
  ## LIMIT ... WITH TIES
</div>

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

```sql theme={null}
SELECT * FROM (
    SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5
```

```response theme={null}
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘
```

`WITH TIES` を使用すると、最後の値と一致するすべての行が含まれます。

```sql theme={null}
SELECT * FROM (
    SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5 WITH TIES
```

```response theme={null}
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
```

6 行目は、5 行目と同じ値 (`2`) であるため含まれます。

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

```sql theme={null}
SELECT * FROM (
    SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 3 OFFSET 2 WITH TIES
```

```response theme={null}
┌─n─┐
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
```

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

<Note>
  `WITH TIES` は負の limit ではサポートされていません。
</Note>

この修飾子は、[`ORDER BY ... WITH FILL`](/ja/reference/statements/select/order-by#order-by-expr-with-fill-modifier) 修飾子と組み合わせて使用できます。

<div id="considerations">
  ## 注意事項
</div>

**非決定論的な結果:** [`ORDER BY`](/ja/reference/statements/select/order-by) 句がない場合、返される行は不定であり、クエリを実行するたびに異なる可能性があります。

**サーバー側の制限:** 返される行数は、[limit](/ja/reference/settings/session-settings#limit) 設定の影響を受ける場合もあります。

<div id="see-also">
  ## 関連項目
</div>

* [LIMIT BY](/ja/reference/statements/select/limit-by) — 値の各グループごとに行数を制限します。各カテゴリ内の上位 N 件の結果を取得する場合に便利です。
