gpt4 book ai didi

sql - 通过存储过程进行数据库分页

转载 作者:行者123 更新时间:2023-12-03 20:27:38 27 4
gpt4 key购买 nike

我想要一个存储过程来为 y 个页面取 x 个数据行。
例如

我有 20 个数据行
我的页面大小是 2
如果我选择第 2 页
我会得到数据行 17,18

我可以使用前 200 名并使用 order by 来选择第一个和最后一个数据行,但是我如何在两者之间获取页面。

@PageNumber INT
As
BEGIN
SELECT COUNT(rate.RateID)/200 FROM dbo.Rate where dbo.Rate.Hourly =0

DECLARE @LastIndex INT
SET @LastIndex= (SELECT TOP 1 rate.RateID FROM dbo.Rate where dbo.Rate.Hourly =0 ORDER BY rate.RateID ASC)

Select TOP 200
[RateID],
[PairID],
[Open],
[Close],
[High],
[Low],
[Difference],
[Average],
[Percentage],
[InfoDate],
[Hourly],
[CaptureDateTime]
From Rate
WHERE Hourly =0 AND RateID >=(@LastIndex+(200* @PageNumber))
ORDER BY [RateID] ASC

结尾
这是我现在所拥有的,但它无法正常工作

最佳答案

好的,由于您还没有指定您使用的是什么 RDBMS,我可以为您提供一个至少对 SQL Server 2005+ 有效的解决方案。

DECLARE @PageNumber INT, @PageSize INT
SET @PageNumber = 3
SET @PageSize = 5;

WITH CTE AS
(
SELECT *, ROW_NUMBER() OVER(ORDER BY RateID) Corr
FROM Rate
WHERE Hourly = 0
)
SELECT *
FROM CTE
WHERE Corr BETWEEN @PageNumber*@PageSize AND @PageNumber*@PageSize+@PageSize-1

此外,您应该知道在下一版本的 SQL Server(“Denali”)中,通过对 TOP 进行一些修改,这将变得容易得多。条款。

关于sql - 通过存储过程进行数据库分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7361105/

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