C# 使用一个存储过程从表中获取最后N行
我想用一个存储过程从表中获取最后N行 我的存储过程有一些参数,如C# 使用一个存储过程从表中获取最后N行,c#,stored-procedures,sql-server-2012,C#,Stored Procedures,Sql Server 2012,我想用一个存储过程从表中获取最后N行 我的存储过程有一些参数,如@PageNumber和@RowCount等 我有两个问题: 我需要在我的用户界面中计算行数和结果数,因为我想在用户处于最后一页时限制他,然后按下一页 我想我的用户可以按最后一页时,他在其他页面 提示:我不想为了得到结果和行数而执行两次存储过程,因为它会产生动态性,并且需要很长的执行时间 关于更多说明,我最多说我的sp类似于: Create Procedure TestSelectBill ( @PageNumb
@PageNumber
和@RowCount
等
我有两个问题:
- 我需要在我的用户界面中计算行数和结果数,因为我想在用户处于最后一页时限制他,然后按下一页
- 我想我的用户可以按最后一页时,他在其他页面
Create Procedure TestSelectBill
(
@PageNumber int = 1 ,
@RowCount int = 5
)
As
Begin
Select
*
From billing.BillMaster As BM
Where
( Bm.SubscribeId = '12345674' )
Order by SubscribeId
OFFSET @PageNumber * @RowCount ROWS
FETCH NEXT @RowCount ROWS ONLY;
End
您可以在查询中使用
Row_Number()
命令subscribe
降序,并且Row[0][“RowNumber”]
是总计数
像这样:
Select
* ,
ROW_NUMBER() OVER ( ORDER BY SubscribeId DESC) as RowNumber
From billing.BillMaster As BM
Where
( Bm.SubscribeId = '12345674' )
Order by SubscribeId
OFFSET @PageNumber * @RowCount ROWS
FETCH NEXT @RowCount ROWS ONLY;
这就是我的解决方案:
Select
COUNT() OVER ( ORDER BY (SELECT NULL)) as RowNumber,
*
From billing.BillMaster As BM
Where
( Bm.SubscribeId = '12345674' )
Order by SubscribeId
OFFSET (@PageNumber - 1) * @RowCount ROWS
FETCH NEXT @RowCount ROWS ONLY;
这不是一个好答案。例如,如果没有分页的查询有100行,并且我希望看到第二个页面有10行,那么我将有11到20行,但是我还需要数字100来创建10个可能的分页。