快捷搜索:  汽车  科技

sql语句怎么实现分页?SQL技巧之ROWNUMBER

sql语句怎么实现分页?SQL技巧之ROWNUMBERSELECT * FROM dbo.zy_detail_charge通过ROW_NUMBER()函数分页来实现,可自定义每页记录数和页数。参数:<partition_by_clause>:将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。 <order_by_clause>:确定将 ROW_NUMBER 值分配给分区中的行的顺序。例如:我有一个费用明细表zy_detail_charge中有290万条记录,如果需要全部读取出来需要1分多钟。

1.ROW_NUMBER()函数介绍

ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号。在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也需要专门一列用于预先排序以便于进行编号。

2.ROW_NUMBER()函数语法规则

说明:返回结果集分区内行的序列号,每个分区的第一行从1开始。

语法:ROW_NUMBER () OVER ([ <partition_by_clause> ] <order_by_clause>) 。

备注:ORDER BY子句可确定在特定分区中为自行分配唯一ROW_NUMBER 的顺序。

参数:<partition_by_clause>:将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。

<order_by_clause>:确定将 ROW_NUMBER 值分配给分区中的行的顺序。

3.ROW_NUMBER()函数实现分页案例

例如:我有一个费用明细表zy_detail_charge中有290万条记录,如果需要全部读取出来需要1分多钟。

SELECT * FROM dbo.zy_detail_charge

sql语句怎么实现分页?SQL技巧之ROWNUMBER(1)

通过ROW_NUMBER()函数分页来实现,可自定义每页记录数和页数。

DECLARE @pagesize INT --每页记录数 DECLARE @pagenum INT ---第几页 SET @pagesize=1000 SET @pagenum=1 SELECT t.* FROM ( SELECT ROW_NUMBER() OVER (ORDER BY patient_id) AS findex * FROM zy_detail_charge ) AS t WHERE findex BETWEEN @pagesize * (@pagenum - 1) 1 AND @pagenum * @pagesize

sql语句怎么实现分页?SQL技巧之ROWNUMBER(2)

猜您喜欢: