Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQL行号分页_Sql - Fatal编程技术网

使用SQL行号分页

使用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 (

我想返回分页格式的搜索结果。然而,我似乎无法成功获得查询的前10个结果

问题是返回的“RowNum”类似于405、687、1024等。我希望它们被重新编号为1、2、3、4、5等,这样当我在第1行和第20行之间指定时,我会得到前20个搜索结果。相反,因为数字更大,我在1到10之间没有得到结果

如果我将RowNum条件更改为:

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名中的任何一个

太棒了,我已经坚持了好几个小时了,非常感谢!