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

> OFFSET 文档

# OFFSET FETCH 子句

`OFFSET` 和 `FETCH` 允许你分批检索数据。它们指定了你希望通过单次查询获取的一个行块。

```sql theme={null}
-- SQL 标准风格：
[OFFSET offset_row_count {ROW | ROWS}] [FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES}]

-- MySQL/PostgreSQL 风格：
[LIMIT [n, ]m] [OFFSET offset_row_count]
```

`offset_row_count` 或 `fetch_row_count` 的值可以是数值，也可以是字面常量。你可以省略 `fetch_row_count`；默认值为 1。

`OFFSET` 指定在开始返回查询结果集中的行之前要跳过的行数。`OFFSET n` 会跳过结果中的前 `n` 行。

支持负数 `OFFSET`：`OFFSET -n` 会跳过结果中的最后 `n` 行。

也支持小数 `OFFSET`：`OFFSET n` — 如果 0 \< n \< 1，则会跳过结果的前 n \* 100%。

示例：
• `OFFSET 0.1` — 跳过结果的前 10%。

> **注意**
> • 该小数必须是大于 0 且小于 1 的 [Float64](/zh/reference/data-types/float) 数值。
> • 如果计算结果得到的行数不是整数，则会向上取整到下一个整数。

`FETCH` 指定查询结果中最多可包含的行数。

`ONLY` 选项用于返回紧接在被 `OFFSET` 省略的行之后的那些行。在这种情况下，`FETCH` 可作为 [LIMIT](/zh/reference/statements/select/limit) 子句的替代方案。例如，以下查询

```sql theme={null}
SELECT * FROM test_fetch ORDER BY a OFFSET 1 ROW FETCH FIRST 3 ROWS ONLY;
```

与该查询完全相同

```sql theme={null}
SELECT * FROM test_fetch ORDER BY a LIMIT 3 OFFSET 1;
```

`WITH TIES` 选项用于返回结果集中按照 `ORDER BY` 子句排序后与最后一行并列的其他行。例如，如果 `fetch_row_count` 设置为 5，但还有另外两行的 `ORDER BY` 列值与第 5 行相同，则结果集将包含 7 行。

<Note>
  根据标准，如果同时存在 `OFFSET` 子句和 `FETCH` 子句，则 `OFFSET` 子句必须位于 `FETCH` 子句之前。
</Note>

<Note>
  实际偏移量还可能取决于 [offset](/zh/reference/settings/session-settings#offset) 设置。
</Note>

<div id="examples">
  ## 示例
</div>

输入表：

```text theme={null}
┌─a─┬─b─┐
│ 1 │ 1 │
│ 2 │ 1 │
│ 3 │ 4 │
│ 1 │ 3 │
│ 5 │ 4 │
│ 0 │ 6 │
│ 5 │ 7 │
└───┴───┘
```

`ONLY` 选项的用法：

```sql title="Query" theme={null}
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS ONLY;
```

```text title="Response" theme={null}
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
└───┴───┘
```

`WITH TIES` 选项的使用：

```sql title="Query" theme={null}
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS WITH TIES;
```

```text title="Response" theme={null}
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
│ 5 │ 7 │
└───┴───┘
```
