Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/order-by-page/ Documentation version: v5.3.2 # 分页 `ORDER BY`、`OFFSET`和`LIMIT`子句可以一起使用,将查询结果数据集划分为离散的子集或页面。这种过程通常称为分页。 本文介绍如何使用这些子句进行分页。除了分页之外,这些子句还可以与其他语句结合使用。更多信息,请参见 [ORDER BY 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/order-by/)、[OFFSET 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/offset/)和 [LIMIT 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/limit/)。 ## 语法 语法图源码 paging_statement ```` paging_statement ::= order_by_clause offset_clause? limit_clause? | offset_clause limit_clause? | limit_clause ```` ## 参数 ### `order_by_clause` 按升序或降序对结果进行排序。更多信息,请参见 [ORDER BY 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/order-by/)。 ### `offset_clause` 在开始返回后续结果之前,跳过指定数量的数据。更多信息,请参见 [OFFSET 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/offset/)。 ### `limit_clause` 指定要返回的结果数的上限。更多信息,请参见 [LIMIT 子句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/clauses/limit/)。 ## 示例 ### 使用 FOR 语句分页 ```` ''' FOR i IN LIST[3, 2, 5, 4, 1] ORDER BY i ASC OFFSET 3 RETURN i ''' ```` 上述语句按升序对列表中的数字进行排序,然后跳过前三行,从第四行开始返回剩余数据。 返回: ```` +---+ | i | +---+ | 4 | | 5 | +---+ ```` ### 在 RETURN 语句之前分页 ```` ''' FOR i IN LIST[3, 2, 5, 4, 1] ORDER BY i ASC OFFSET 1 LIMIT 3 RETURN i ''' ```` 上述语句在`RETURN`语句之前执行排序和分页操作。 返回: ```` +---+ | i | +---+ | 2 | | 3 | | 4 | +---+ ```` 如果子句不按照语法定义的顺序排列,它们将被视为多个分页语句,每个分页语句只包含一个子句。如下例所示。 ```` ''' FOR i IN LIST[3, 2, 5, 4, 1] LIMIT 3 OFFSET 1 RETURN i ''' ```` 上述语句在`RETURN`语句之前执行两个分页语句。第一个是包含`LIMIT`子句的分页语句,第二个是包含`OFFSET`子句的分页语句。 这是因为根据语法,`OFFSET`子句后面只能跟随`LIMIT`子句。由于子句不按照语法定义的顺序排列,它们被视为两个连续的分页语句。 返回: ```` +---+ | i | +---+ | 2 | | 5 | +---+ ```` 您可以执行以下语句查看执行计划。 ```` ''' EXPLAIN FOR i IN LIST[3, 2, 5, 4, 1] LIMIT 3 OFFSET 1 RETURN i ''' ```` 返回: ```` ---------------+--------------------------------------------------------- | planNodes | details | ---------------+--------------------------------------------------------- | Limit | Offset 1, Limit 18446744073709551615, IS Partial false | | └─Limit | Offset 0, Limit 3, IS Partial false | | └─Unwind | For i IN [3,2,5,4,1] | | └─Values | UNIT | ---------------+--------------------------------------------------------- ```` ### 在 RETURN 语句之后分页 `RETURN`语句后只能跟随一个分页语句。更多信息,请参见[线性查询语句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/linear-query/)。 ```` ''' FOR i IN LIST[3, 2, 5, 4, 1] RETURN i OFFSET 1 LIMIT 3 ''' ```` 返回: ```` +---+ | i | +---+ | 2 | | 5 | | 4 | +---+ ````