2016-09-02 8 views
0

ページネーションの結果のための私のクエリはのようなステートメントを使用してSQL Server 2008のページネーションを達成するための方法

SELECT 
    * 
FROM 
    (SELECT 
     ROW_NUMBER() OVER (ORDER BY Id DESC) AS RowNum, 
     * 
    FROM 
     My_Table) AS RowConstrainedResult 
WHERE 
    (RowNum >= 1 AND RowNum <= 10) 
ORDER BY 
    RowNum 

これが正常に動作しています。しかし、これを同じような文で検索しようとすると、うまくいきませんでした。最初の10行が検索に値が含まれていない場合は

検索クエリ

SELECT 
    * 
FROM 
    (SELECT 
     ROW_NUMBER() OVER (ORDER BY Id DESC) AS RowNum, 
     * 
    FROM 
     My_Table) AS RowConstrainedResult 
WHERE 
    column1 LIKE '%search%' 
    AND (RowNum >= 1 AND RowNum <= 10) 
ORDER BY 
    RowNum 

、その戻り0の結果ではなく、完全なテーブルを探しています。それはSQL Serverで2008

任意のより良い方法をサポートしていないので、私は、SQL Serverのように、通常のために正常に動作ページ付けのために2008

おかげ

+0

私はあなたの質問をフォーマットし、2番目のクエリは(ROWNUM> = '1'の前にオペレータが欠如していることを発見しました。 – techspider

+0

ありがとうございましたが、これは問題ではありません –

+1

私は問題については取り上げていませんが、私は何かを追加してあなたの質問を更新して更新できると言っています正確な答えを得るための正しい情報で! – techspider

答えて

1

を使用するようにオフセットしてフェッチを使用することはできませんあなたは本当に近いです.CTEを使用してフィルターをかけ、そこから10行を選択します。あなたの状況に応じて、あなたは、単にと逃げることができるかもしれ

;WITH X AS 
(
    SELECT ROW_NUMBER() OVER (ORDER BY Id DESC) AS RowNum, * 
    FROM My_Table 
    WHERE column1 LIKE '%search%' 
) 

SELECT * 
FROM X 
WHERE RowNum BETWEEN 1 AND 10 
ORDER BY RowNum 

SELECT TOP 10 *, ROW_NUMBER() OVER (ORDER BY Id DESC) AS RowNum 
FROM My_Table 
WHERE column1 LIKE '%search%' 
ORDER BY RowNum 
関連する問題