mysql分页函数 over_SQL Server用行号(函数,ROW_NUMBER() over())实现分页功能

由于MySQL与Oracle中一般可以借助内置函数直接输出表记录的序号,SQLServer2000没有提供这种函数,新版SQLServer2005终于提供了一种:row_number() over(order by 表字段)的函数实现了该功能,在此将一般实现方法

select * from (select uid,mobile,email,nickname,ROW_NUMBER() over (order by nickname desc) as sort from u_user) as u_temp

where sort>=6 and sort<=9

简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY nickname DESC)

是先把nickname列降序,再为降序以后每没条nickname记录返回一个序号。

nickname      sort

1700              6

1500              7

1085              8

710                9

注:ORDER BY Uid,根据ES_USER表中Uid来进行排序;

row_number() 、Over(order by XXX [desc/asc])这两个函数一定是同时存在的。

语法: select top 5 * from( select row_number() over(order by 字段名)  as 字段别名 from 表名) 别名 where 字段别名<=5

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

67ea6bf117c8908eb6e72b0e0632fc74.png

5eb46057c9bfd346dc0acd505f1f0ef0.png

SQL脚本:

SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值