SQL सर्वर 2012 में, ANSI मानक OFFSET
. के लिए समर्थन है / FETCH
वाक्य - विन्यास। मैंने के बारे में ब्लॉग किया यह
और यहां आधिकारिक दस्तावेज़ (यह ORDER BY
. का विस्तार है ) SQL सर्वर 2012 के लिए परिवर्तित आपका सिंटैक्स होगा:
SELECT ID, Name, Price, Image
FROM Products
ORDER BY ID ASC
OFFSET (@start_from - 1) ROWS -- not sure if you need -1
-- because I don't know how you calculated @start_from
FETCH NEXT @items_on_page ROWS ONLY;
इससे पहले, आपको ROW_NUMBER()
. सहित विभिन्न समाधान का उपयोग करने की आवश्यकता है तरीका। देखें यह लेख
और फॉलो-ऑन चर्चा
. यदि आप SQL Server 2012 पर नहीं हैं, तो आप मानक सिंटैक्स या MySQL के गैर-मानक LIMIT
का उपयोग नहीं कर सकते हैं लेकिन आप अधिक वर्बोज़ समाधान का उपयोग कर सकते हैं जैसे:
;WITH o AS
(
SELECT TOP ((@start_from - 1) + @items_on_page)
-- again, not sure if you need -1 because I
-- don't know how you calculated @start_from
RowNum = ROW_NUMBER() OVER (ORDER BY ID ASC)
/* , other columns */
FROM Products
)
SELECT
RowNum
/* , other columns */
FROM
o
WHERE
RowNum >= @start_from
ORDER BY
RowNum;
इस बिल्ली को त्वचा देने के कई अन्य तरीके हैं, यह सबसे कुशल होने की संभावना नहीं है लेकिन वाक्यविन्यास-वार शायद सबसे सरल है। मेरा सुझाव है कि मेरे द्वारा पोस्ट किए गए लिंक की समीक्षा करने के साथ-साथ प्रश्न की टिप्पणियों में दिए गए डुप्लिकेट सुझावों की समीक्षा करें।