在获取sql中每个记录有100条的值时,如何进行分页
我们如何在SQl Server中使用行号从表中获取前100条记录、下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
;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;
使用CTE和OFFSET:
@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)的可能副本的可能副本