SQL सर्वर 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