1

ページ分割された形式で検索結果を返したい。ただし、クエリの最初の 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%'

どんな助けでも感謝します。

4

2 に答える 2

2

サブクエリでを適用する必要があり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
于 2012-12-05T17:00:53.460 に答える
0

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

rownumvairable は、すべての行に順番に割り当てられています。あなたはトップ 20 から何も選択していません。

于 2012-12-05T17:01:16.970 に答える