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个年龄最大的学生:

mysql 限制时间为上个月 mysql限制返回行数_数据库

mysql 限制时间为上个月 mysql限制返回行数_数据库_02

 

使用Top返回行的百分比

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

mysql 限制时间为上个月 mysql限制返回行数_mysql 限制时间为上个月_03

mysql 限制时间为上个月 mysql限制返回行数_mysql 限制时间为上个月_04

 

③使用Top With Ties

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

mysql 限制时间为上个月 mysql限制返回行数_数据_05

mysql 限制时间为上个月 mysql限制返回行数_数据_06

 

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个年龄最大的学生: 

mysql 限制时间为上个月 mysql限制返回行数_sql_07

mysql 限制时间为上个月 mysql限制返回行数_sql_08

 

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

mysql 限制时间为上个月 mysql限制返回行数_数据_09

mysql 限制时间为上个月 mysql限制返回行数_数据库_10

 

分页查询

语法:

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

OFFSET    (PageNum - 1)*PageSize ROWS

FETCH [FIRST| NEXT]    PageSize ROWS ONLY

·PageNum - 指定页数

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

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

mysql 限制时间为上个月 mysql限制返回行数_数据库_11

 

mysql 限制时间为上个月 mysql限制返回行数_Server_12