0

たとえば、テーブルに 10.000 レコードがあります。クエリを実行するたびに、ページ番号nをパラメーターとして取得します。nからまでのレコードを選択する必要がn*100あり、いくつかの複雑な条件を満たす必要があります。も使用しているため、最後の要素の を保持して、主キーを使用して上位のレコードを選択ORDER BYすることはできません。どうすればこれを達成できますか?PrimaryKeyn

4

2 に答える 2

4

ページ計算に基づいて、次のクエリでFromパラメータとToパラメータの値を渡します。

WITH NumberedMyTable AS
(
    SELECT
        *,
        ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber
    FROM
        MyTable
)
SELECT
    *
FROM
    NumberedMyTable
WHERE
    RowNumber BETWEEN @From AND @To
于 2012-05-15T13:20:57.510 に答える
1
declare @n int
set @n=2

with my_query as(
    select ROW_NUMBER() over (order by name) as ID, * 
    from sys.tables
)
select * 
from my_query
where ID >=@n and ID<=(@n*10)
于 2012-05-15T13:26:27.900 に答える