でSQL Server 2012のそれは非常に非常に簡単です
SELECT col1, col2, ...
FROM ...
WHERE ...
ORDER BY -- this is a MUST there must be ORDER BY statement
-- the paging comes here
OFFSET 10 ROWS -- skip 10 rows
FETCH NEXT 10 ROWS ONLY; -- take 10 rows
ORDER BYをスキップしたい場合は、
SELECT col1, col2, ...
...
ORDER BY CURRENT_TIMESTAMP
OFFSET 10 ROWS -- skip 10 rows
FETCH NEXT 10 ROWS ONLY; -- take 10 rows
(私はむしろそれをハックとしてマークしたいのですが、それは例えばNHibernateによって使用されています。賢明にピックアップされた列をORDER BYとして使用することをお勧めします)
質問に答えるには:
--SQL SERVER 2012
SELECT PostId FROM
( SELECT PostId, MAX (Datemade) as LastDate
from dbForumEntry
group by PostId
) SubQueryAlias
order by LastDate desc
OFFSET 10 ROWS -- skip 10 rows
FETCH NEXT 10 ROWS ONLY; -- take 10 rows
新しいキーワードoffset
とfetch next
(SQL規格に従うだけで)が導入されました。
しかし、私は、あなたが使用していないことを、推測するSQL Server 2012のを右、?以前のバージョンでは、少し(少し)難しいです。ここでは、すべてのSQLサーバーのバージョンの比較および実施例は次のとおりです。ここで
したがって、これはSQL Server 2008で機能する可能性があります。
-- SQL SERVER 2008
DECLARE @Start INT
DECLARE @End INT
SELECT @Start = 10,@End = 20;
;WITH PostCTE AS
( SELECT PostId, MAX (Datemade) as LastDate
,ROW_NUMBER() OVER (ORDER BY PostId) AS RowNumber
from dbForumEntry
group by PostId
)
SELECT PostId, LastDate
FROM PostCTE
WHERE RowNumber > @Start AND RowNumber <= @End
ORDER BY PostId