就先讲一个简单的分页查询,
原理: 如 一页 为10条数据, 要查第二页 第11- 20 条数据, 那么 要根据一个固定字段(如ID)先进行排序 查出 前 20条数据,
然后再用子查询, 倒序 查 前10条数据, 即可查出第二页的数据 如下sql:
SELECT TOP 10 A.* FROM (SELECT TOP 2X10 * FROM TABLE ORDER BY ID ASC)A ORDER BY A.ID DESC
当然了, 上面的分页查询是有一点问题的, 就是不管怎么查询, 最后一页的数据总是那么多,
此处还有另一种分页方式, 会比较精确点了
SELECT A.* FROM (SELECT TOP 60 * FROM TABLENAME ORDER BY ID ASC )A
WHERE A.ID NOT IN (SELECT TOP 50 ID FROM TABLENAME ORDER BY ID ASC)
但是我想说的是被好多人所不关注的一种分页方法:
select * from 表 order by id OFFSET PageIndex*pagenum ROWS FETCH next pagenumrows only
这种方法是不是很简单,但是这个只有在SQL Server 2012及以上版本中才能使用,无论是从逻辑读取数还是响应时间、实际执行行数等关键参数看,SQL Server 2012提供的OFFSET/FETCH NEXT分页方式都比Row_Number()方式有了较大的提升。
注意:使用该方法必须使用order by ,不然会有语法错误。
如果需要进行筛选之类的, 可以在中间的查询语句中筛选,外层不变, 觉得好用点个赞哦