gpt4 book ai didi

sql-server-2005 - 帮助 !如何从我的 SQL Server 分页过程中获取总行数?

转载 作者:行者123 更新时间:2023-12-01 09:09:38 24 4
gpt4 key购买 nike

好的,我的 SQL Server 数据库中有一个存储评论的表。我的愿望是能够使用我的数据列表中的 [Back]、[Next]、页码和 [Last] 按钮对记录进行分页。我认为最有效的方法是使用只返回特定范围内一定数量行的存储过程。这是我想出的

@PageIndex INT, 
@PageSize INT,
@postid int


AS
SET NOCOUNT ON
begin

WITH tmp AS (
SELECT comments.*, ROW_NUMBER() OVER (ORDER BY dateposted ASC) AS Row
FROM comments
WHERE (comments.postid = @postid))

SELECT tmp.*
FROM tmp
WHERE Row between

(@PageIndex - 1) * @PageSize + 1 and @PageIndex*@PageSize

end

RETURN

现在一切正常,我已经能够在我的数据列表寻呼机中实现 [Next] 和 [Back] 按钮。现在我需要所有评论的总数(不在当前页面中),以便我可以实现我的页码和寻呼机上的 [Last] 按钮。换句话说,我想在我的第一个选择语句中返回总行数,即

  WITH tmp AS ( 
SELECT comments.*, ROW_NUMBER() OVER (ORDER BY dateposted ASC) AS Row
FROM comments
WHERE (comments.postid = @postid))
set @TotalRows = @@rowcount

@@rowcount 不起作用并引发错误。我也不能让 count.* 工作。

是否有另一种方法来获取总行数,或者我的方法注定要失败。

最佳答案

要获取页面的评论总数,需要单独查询:

SELECT TotalRows = COUNT(*)
FROM comments
WHERE comments.postid = @postid

将这些数据带回同一查询中的唯一方法是将数据存储为主存储过程上的子查询,并返回存储过程中每一行的总数。

关于sql-server-2005 - 帮助 !如何从我的 SQL Server 分页过程中获取总行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2549219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com