使用SQL行号分页
我想返回分页格式的搜索结果。然而,我似乎无法成功获得查询的前10个结果 问题是返回的“RowNum”类似于405、687、1024等。我希望它们被重新编号为1、2、3、4、5等,这样当我在第1行和第20行之间指定时,我会得到前20个搜索结果。相反,因为数字更大,我在1到10之间没有得到结果 如果我将RowNum条件更改为:使用SQL行号分页,sql,Sql,我想返回分页格式的搜索结果。然而,我似乎无法成功获得查询的前10个结果 问题是返回的“RowNum”类似于405、687、1024等。我希望它们被重新编号为1、2、3、4、5等,这样当我在第1行和第20行之间指定时,我会得到前20个搜索结果。相反,因为数字更大,我在1到10之间没有得到结果 如果我将RowNum条件更改为: AND RowNum < 20000 我得到了很多结果 下面是sql: SELECT * FROM (
AND RowNum < 20000
我得到了很多结果
下面是sql:
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY DocumentID ) AS RowNum, *
FROM Table
) AS RowConstrainedResult
WHERE RowNum >= 1
AND RowNum < 20
AND Title LIKE '%diabetes%'
AND Title LIKE '%risk%'
非常感谢您的帮助。您需要在子查询中应用WHERE。我将使用CTE,而不是假设SQL Server::
WITH CTE AS
(
SELECT T.*,
ROW_NUMBER() OVER ( ORDER BY DocumentID ) AS RowNum
FROM Table T
WHERE Title LIKE '%diabetes%' AND Title LIKE '%risk%'
)
SELECT * FROM CTE
WHERE RowNum >= 1 AND RowNum < 20
您需要将where条件移动到子查询中:
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY DocumentID ) AS RowNum, *
FROM Table
where Title LIKE '%diabetes%'
AND Title LIKE '%risk%'
) AS RowConstrainedResult
WHERE RowNum >= 1 AND RowNum < 20
Rownum VARABLE正在按顺序分配给所有行。您没有选择前20名中的任何一个 太棒了,我已经坚持了好几个小时了,非常感谢!