在获取sql中每个记录有100条的值时,如何进行分页

在获取sql中每个记录有100条的值时,如何进行分页,sql,sql-server-2012,Sql,Sql Server 2012,我们如何在SQl Server中使用行号从表中获取前100条记录、下100条记录、下一条记录等等 ;with cte as ( select *,row_number() over (order by someuniquekey) as paging ) select * from where paging between 1 and 100 您也可以像下面那样使用偏移量和提取 select * from table order by someuniquekey offset 0 rows

我们如何在SQl Server中使用行号从表中获取前100条记录、下100条记录、下一条记录等等

;with cte
as
(
select *,row_number() over (order by someuniquekey) as paging
)
select * from where paging between 1 and 100
您也可以像下面那样使用偏移量和提取

select 
* from table
order by someuniquekey
offset 0 rows fetch next 100 rows only
上述的参数化版本

-- parameterized
DECLARE 
  @pagenum  AS INT = 2,
  @pagesize AS INT = 100;

SELECT *
FROM table
ORDER BY someuniquekey
OFFSET (@pagenum - 1) * @pagesize ROWS FETCH NEXT @pagesize ROWS ONLY;
进一步阅读..

使用行号

;with cte
as
(
select *,row_number() over (order by someuniquekey) as paging
)
select * from where paging between 1 and 100
您也可以像下面那样使用偏移量和提取

select 
* from table
order by someuniquekey
offset 0 rows fetch next 100 rows only
上述的参数化版本

-- parameterized
DECLARE 
  @pagenum  AS INT = 2,
  @pagesize AS INT = 100;

SELECT *
FROM table
ORDER BY someuniquekey
OFFSET (@pagenum - 1) * @pagesize ROWS FETCH NEXT @pagesize ROWS ONLY;
进一步阅读..

使用CTE偏移量

@RecordIndex=Start Row No
@PageSize=No of Rows to fetch

;WITH CTE_Results
AS (
SELECT 
    ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS ROWNUM,
    Count(*) over () AS TotalCount,
    *
    FROM TableName  
)      
Select * from CTE_Results 
ORDER BY ROWNUM
OFFSET (@RecordIndex) ROWS
FETCH NEXT @PageSize ROWS ONLY;

使用CTEOFFSET

@RecordIndex=Start Row No
@PageSize=No of Rows to fetch

;WITH CTE_Results
AS (
SELECT 
    ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS ROWNUM,
    Count(*) over () AS TotalCount,
    *
    FROM TableName  
)      
Select * from CTE_Results 
ORDER BY ROWNUM
OFFSET (@RecordIndex) ROWS
FETCH NEXT @PageSize ROWS ONLY;

以下是根据页码和记录计数进行分页的过程。默认情况下,该过程将返回表中的前100条记录

  • 在数据库中创建以下过程。确保您提到了表名和排序列

    CREATE PROCEDURE [dbo].[Fetchdata]
        @pageno INT=1,
        @pagesize INT=100
    AS
    BEGIN
    
    SET NOCOUNT ON;    
    
    DECLARE @sql VARCHAR(MAX)= '    
                SELECT *
                FROM YOURTABLE
                ORDER BY [YOURCOLUMN]
                OFFSET ('+CONVERT(VARCHAR(50),@pageno)+' - 1) * '+CONVERT(VARCHAR(50),@pagesize)
                    +' ROWS FETCH NEXT '+CONVERT(VARCHAR(50),@pagesize)+' ROWS ONLY;'
    
     EXEC (@sql)
    
    
     END
    
  • 使用下面的脚本执行该过程,输入页码和页面大小

      EXEC [FetchData] @pageno=2 ,@pagesize=100
    

  • 以下是根据页码和记录计数进行分页的过程。默认情况下,该过程将返回表中的前100条记录

  • 在数据库中创建以下过程。确保您提到了表名和排序列

    CREATE PROCEDURE [dbo].[Fetchdata]
        @pageno INT=1,
        @pagesize INT=100
    AS
    BEGIN
    
    SET NOCOUNT ON;    
    
    DECLARE @sql VARCHAR(MAX)= '    
                SELECT *
                FROM YOURTABLE
                ORDER BY [YOURCOLUMN]
                OFFSET ('+CONVERT(VARCHAR(50),@pageno)+' - 1) * '+CONVERT(VARCHAR(50),@pagesize)
                    +' ROWS FETCH NEXT '+CONVERT(VARCHAR(50),@pagesize)+' ROWS ONLY;'
    
     EXEC (@sql)
    
    
     END
    
  • 使用下面的脚本执行该过程,输入页码和页面大小

      EXEC [FetchData] @pageno=2 ,@pagesize=100
    

  • 您可以参考本页,这是与分页相关的相同问题


    您可以参考本页,这与分页有关


    是的,它表示起始行索引,如果您想从1到10,则通过1;如果您想从11到20,则通过11,依此类推。我们应该将索引记录为2 s。是的,它表示起始行索引,如果您想从1到10,则通过1,如果您想要从11到20,那么传递11,然后再传递11或2/我们应该将索引记录为2s。在这里,偏移量('+CONVERT(VARCHAR(50),@pageno)+'-1)*'+CONVERT(VARCHAR(50),@pagesize)+'行获取下一个'+CONVERT(VARCHAR(50),@pagesize)+'行;'它显示了错误你能解释一下你得到的确切错误是什么吗??在这个过程中,您必须传递页码和页面大小,即您希望从表中获得的行数。这意味着它在偏移量附近出现了错误,现在它是正确的,因为我在偏移量之前加了',它是pblmby,使用VARCHAR(MAX)=它是否需要更多的时间来获取?不,它只是存储查询字符串。。取数将在下一步进行。。这里的EXEC(@sql),偏移量('+CONVERT(VARCHAR(50),@pageno)+'-1)*'+CONVERT(VARCHAR(50),@pagesize)+'行获取下一个'+CONVERT(VARCHAR(50),@pagesize)+'行;'它显示了错误你能解释一下你得到的确切错误是什么吗??在这个过程中,您必须传递页码和页面大小,即您希望从表中获得的行数。这意味着它在偏移量附近出现了错误,现在它是正确的,因为我在偏移量之前加了',它是pblmby,使用VARCHAR(MAX)=它是否需要更多的时间来获取?不,它只是存储查询字符串。。取数将在下一步进行。。EXEC(@sql)的可能副本的可能副本