sqlserver 数据分页 多个主键

来源:互联网 发布:centos 系统版本 编辑:程序博客网 时间:2024/06/05 17:25

在sqlserver中,数据库的分页一般结合top 和 not in 来实现,但这必须是表中只有一个主键,如果有多个主键该怎么做呢
现在有一个表A
里面有字段
name
schoolyear
text
其中name 和 schoolyear为主键
如果要查询 pagesize 条数据,第 page 页
解决方案:
用row_number()函数来实现
SELECT TOP pagesize * FROM
(SELECT ROW_NUMBER() OVER (ORDER BY name) AS RowNo,* FROM A)
WHERE RowNo > (page - 1) * pagesize
这种方法的思路:
ROW_NUMBER() 可以生成一个顺序的行号,OVER (ORDER BY name) 是根据name来排行号

0 0