SQLServer的分页
特点:一次查询,数据库只返回一页的数据。而不是取出所有的数据。 pagesize: 每页显示记录数 select * from (?? select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage?? * from user_table?? ORDER BY id ASC ) as aSysTable?? ORDER BY id DESC ) as bSysTable?? ORDER BY id ASC
假如数据库表如下: user_table: id:主键,自增 假设有80条记录,每页显示10条记录,id 从1到80
这时该语句应该为: select * from (?? select TOP 10 * FROM ( SELECT TOP 30?? * from user_table?? ORDER BY id ASC ) as aSysTable?? ORDER BY id DESC ) as bSysTable?? ORDER BY id ASC 原理如下: 先按照id从小到大升序取出30条记录(3*10),也就是:id 在 1-30 之间的记录 (SELECT TOP 30?? * from user_table?? ORDER BY id ASC) 然后按照ID降序排列这30条记录,得到记录为id 在:从30到 1?? 然后在这些30条记录中取出前10条记录:取得的记录为:id 在30-21之间。这就是我们需要的数据,但这时是按照降序排列的,不符合要求。 最后在重新排序得到最终我们需要的数据。id在21-30之间。
如有问题,希望和大家一块交流。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |