SQL Server Offset Fetch子句
SQL查询语句中的 limit 与 offset 的用法:
limit y 分句表示: 读取 y 条数据
limit x, y 分句表示: 跳过 x 条数据,读取 y 条数据
limit y offset x 分句表示: 跳过 x 条数据,读取 y 条数据
===================================================================
在本教程中,将学习如何使用SQL Server OFFSET FETCH
子句来限制查询返回的行数。OFFSET
和FETCH
子句是ORDER BY
子句的选项。 它们用于限制查询返回的行数。
以下是OFFSET
和FETCH
子句的语法:
ORDER BY column_list [ASC |DESC]
OFFSET offset_row_count {ROW | ROWS}
FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLY
在上面语法中,
OFFSET
子句指定在开始从查询返回行之前要跳过的行数。offset_row_count
可以是大于或等于零的常量,变量或参数。FETCH
子句指定在处理OFFSET
子句后要返回的行数。offset_row_count
可以是大于或等于1
的常量,变量或标量。OFFSET
子句是必需的,而FETCH
子句是可选的。 此外,FIRST
和NEXT
是同义词,因此可以互换使用它们。
以下图中说明了OFFSET
和FETCH
子句:
请注意,必须将OFFSET
和FETCH
子句与ORDER BY
子句一起使用。 否则将收到错误消息。OFFSET
和FETCH
子句比实现TOP
子句更适合实现查询分页解决方案。
SQL Server OFFSET和FETCH示例
下面将使用示例数据库中的products
表进行演示。
以下查询返回products
表中的所有产品,并按其价格和名称对产品进行排序:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price,
product_name;
执行上面示例查询语句,得到以下结果 -
要跳过前10
个产品并返回其余产品,请使用OFFSET
子句,如以下语句所示:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price,
product_name
OFFSET 10 ROWS;
执行上面示例查询语句,得到以下结果 -
要跳过前10
个产品并选择接下来的10
个产品,请使用OFFSET
和FETCH
子句,如下所示:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price,
product_name
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;
执行上面示例查询语句,得到以下结果 -
要获得前10
个最贵的产品,请使用OFFSET
和FETCH
子句,如下所示:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price DESC,
product_name
OFFSET 0 ROWS
FETCH FIRST 10 ROWS ONLY;
执行上面示例查询语句,得到以下结果 -
在此示例中,ORDER BY
子句按价格按降序对产品进行排序。 然后,OFFSET
子句跳过零行,FETCH
子句从列表中获取前10
个产品。
在本教程中,学习了如何使用SQL Server OFFSET FETCH
子句限制查询返回的行数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?