我对SQL并不十分熟悉。因此,我有一个SQL脚本来过滤表格中的数据:
SELECT X, Y, Z FROM dbo.a
WHERE Y LIKE '%Test%' AND Z >= 5 AND Z <= 10
现在我正在尝试为此添加分页。我正在使用MS SQL Server 2008.我用于分页的脚本是:
SELECT X, Y, Z
FROM (
SELECT X, Y, Z, ROW_NUMBER() OVER (ORDER BY X) AS RowNum
FROM dbo.a ) AS A
WHERE A.RowNum BETWEEN 1 AND 10
我如何将这些组合起来,以便从我的过滤表中抓取特定的数据页?
答案 0 :(得分:0)
您的子查询应该是带有谓词的子查询。
数据分页是偏移量和页面大小的组合。偏移量是所需的页面索引乘以页面大小。因此,如果您的页面是20个结果而您想要第5页,那么rownumber范围是从(5-1) * 20
到5 * 20
(我们从页码中减去1,因为我们想要一个从0开始的索引)。 / p>
在您的情况下,查询将是:
SELECT
X, Y, Z
FROM (
SELECT
X, Y, Z,
ROW_NUMBER() OVER (ORDER BY X) AS RowNum
FROM
dbo.a
WHERE
Y LIKE '%Test%'
AND
Z >= 5
AND
Z <= 10
) AS A
WHERE
A.RowNum BETWEEN @pageIndex * @pageSize AND (@pageIndex + 1) * @pageSize
...其中@pageIndex
是从0开始的页码(因此从基数页码中减去1)。