SQL Server OFFSET FETCH17 Mar 2025 | 4 分钟阅读 本文将解释使用 OFFSET FETCH 功能来检索有限内存记录并避免内存不足异常。 SQL Server 中的 FETCH 和 OFFSET 子句与 SELECT 和 ORDER BY 子句结合使用,以限制查询返回的记录范围。它于 2012 年 SQL Server 版本中首次引入,用于对结果集进行分页。当我们的数据库包含大量数据时,它非常有用。 OFFSET 和 FETCH 的用法OFFSET:此子句用于指定从结果集返回行的起始点。 基本上,它会忽略初始记录集。 SQL Server 只能与 ORDER BY 子句一起使用。 如果它的值为负数,将返回一个错误。 因此,它应该始终大于或等于零。 FETCH:这是一个可选子句,提供我们希望在查询的 OFFSET 之后返回的行数。 我们不能在没有 OFFSET 的情况下使用它。 它的值不能为负数,类似于 OFFSET。 因此,它应该始终大于或等于零; 否则,它将抛出错误。 语法以下是说明 OFFSET 和 FETCH 子句使用的语法 在此语法中,我们定义了要从中检索数据的表名。 接下来,我们指定了ORDER BY 子句,用于按升序或降序显示记录。 接下来,我们指定了OFFSET 以跳过记录数,最后,FETCH 用于返回记录集。 示例让我们实际了解 OFFSET 和 FETCH 子句的用法。 假设我们有一个名为customer的表,其中包含以下数据 ![]() 假设您想获取从 5 开始,直到接下来四行的记录范围。 我们可以通过使用 OFFSET 和 FETCH 子句轻松做到这一点。 这是查询 执行该语句将返回以下输出,其中 OFFSET 5 跳过五行,FETCH 4 ROWS ONLY 显示所需的结果。 ![]() 如果我们要跳过前五个客户记录并返回其余记录,我们只需要使用 OFFSET 子句,如下面的查询所示 执行该语句将返回所需的输出 ![]() 如果我们要根据客户名称的升序检索前 6 个客户,我们需要同时使用 OFFSET 和 FETCH 子句,如下所示 执行查询将返回所需的结果 ![]() 如果我们要获取客户的最后三条记录(按其名称排序),我们可以使用 OFFSET 和 FETCH 子句,如下所示 执行查询将返回所需的结果 ![]() 如果我们在没有 OFFSET 子句的情况下执行上述语句,我们将得到一个错误 SQL Server 将抛出以下错误消息 ![]() TOP 和 OFFSET & FETCH 子句的区别TOP 和 OFFSET FETCH 子句都用于限制 SQL Server 中查询返回的行数。 但是,它们有一些区别,如下表所述
下一主题SQL Server 中的锁 |
我们请求您订阅我们的新闻通讯以获取最新更新。