SQL Server限制返回行数

1.Select Top语句

Select Top用于限制查询结果集中返回的行数或行百分比。Select Top子句对于拥有数千条记录的大型表来说是非常有用的由于存储在表中的行的顺序是不可预测的,因此Select Top 语句始终与Order By子句一起使用。

*注意:并非所有的数据库系统都支持Select Top语句。MySQL支持limit语句来选取指定的条数数据,Oracle可以使用RowNum来选取。

语法:

SELECT TOP   expression   |   percent   *

FROM  table_name

ORDER BY   [column_name | expression] [ASC | DESC]

·expression - TOP 关键字后面是一个表达式,它指定要返回的行数。如果使用percent,则将表达式计算为浮点值,否则将其转换为 BIGINT 值。

·percent- percent关键字指示查询返回前N个行百分比,其中N是表达式的结果。

①使用具有恒定值的Top

以下语句使用常量值返回前5个年龄最大的学生:

 

 ②使用Top返回行的百分比

以下语句使用percent指定返回的学生人数。 student表有10行数据,10的百分之一是分数值1 。如果分数值是浮点数,SQL Server将其进到下一个整数。

 

使用Top With Ties

以下语句声明返回年龄最大的三名同学,再返回与最后一行中的值匹配的行:

 

2.Offset Fetch语句

Offset和 Fetch子句是Order By子句的选项。它们用于限制查询返回的行数。

Offset和 Fetch子句比实现 Top子句更适合实现查询分页解决方案。

语法:

ORDER BY   [column_name | expression] [ASC | DESC]

OFFSET    offset_row_count ROWS

FETCH [FIRST| NEXT]    fetch_row_count ROWS ONLY

·OFFSET子句指定在开始从查询返回行之前要跳过的行数。 offset_row_count 可以是大于或等于0的参数。

·FETCH子句指定在处理 OFFSET子句后要返回的行数。 offset_row_count 可以是大于或等于1的参数。

*注意:OFFSET子句是必需的,而FETCH子句是可选的。此外,FIRST和NEXT是同义词,因此可以互换使用它们。

①获得前5个年龄最大的学生: 

 

跳过前5个学生并选择接下来的5个学生:

 

 ③分页查询

语法:

ORDER BY    [column_name | expression] [ASC | DESC]

OFFSET    (PageNum - 1)*PageSize ROWS

FETCH [FIRST| NEXT]    PageSize ROWS ONLY

·PageNum - 指定页数

·PageSize - 指定每页返回多少条数据

以下语句将数据分为5页,每页两条数据:

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值