查询M-N条记录

方法一:表分页数据查询:在t1里面先用函数ROW_NUMBER()对结果集获取以及排序.t1里面可以增加WHERE条件,再从t1里面的RowIndex获取第几行数据 BETWEEN 16 AND 30 如下获取第二页数据,pagesize=15 pageno=2

SELECT * FROM(SELECT * ,ROW_NUMBER() OVER(ORDER BY id ASC) AS RowIndex 
 FROM TB_Form WHERE FormStateId=3) AS t1 WHERE RowIndex BETWEEN 16 AND 30
 
 pagesize=15
 第n页 
 startindex:15*(n-1)+1
 endindex:15*n

方法二:利用order by子句关键字解析:    Offset子句:用于指定跳过(Skip)的数据行;    Fetch子句:该子句在Offset子句之后执行,表示在跳过(Sikp)指定数量的数据行之后,返回一定数据量的数据行;    执行顺序:Offset子句必须在Order By 子句之后执行,Fetch子句必须在Offset子句之后执行;
分页实现的思路:    在分页实现中,使用Order By子句,按照指定的columns对结果集进行排序;    使用Offset子句跳过前N页:Offset (@PageIndex-1)*@PageSize rows;    使用Fetch子句呈现当前Page:Fetch next @PageSize rows only;
https://www.cnblogs.com/ljhdo/p/4861263.html

SELECT Id,BookName,Author FROM dbo.BookInfo

--ORDER BY (SELECT 1) ASC 按照原来排序
--下面获取第二页(页大小=2)的数据
SELECT Id,BookName,Author FROM dbo.BookInfo ORDER BY (SELECT 1) ASC
 OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY 

posted @ 2026-08-30 18:13  清哥的码农生活  阅读(3)  评论(0)    收藏  举报