การคิวรีข้อมูลแบบแบ่งหน้า เช่น ต้องการแถวข้อมูลในหน้าที่ 3 เมื่อแบ่งหน้าแสดงผลครั้งละ 50 แถว
ซึ่งหมายถึงต้องการแถวที่ 101 ถึง 150
ใน SQL Server เวอร์ชั่นก่อนหน้า 2012 จะต้องใช้ทักษะ เทคนิคในการเขียนคิวรีค่อนข้างมาก ตัวอย่างเช่น
{syntaxhighlighter brush:sql}SELECT C.*
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY CustomerID ASC) AS RowNum,
CustomerID
FROM Sales.Customer
) AS C
WHERE C.RowNum BETWEEN 101 AND 150;{/syntaxhighlighter}
แต่ใน SQL Server 2012 ได้มีเพิ่มเติมวลีใหม่คือ OFFSET-FETCH ตามมาตรฐาน SQL:2011
ทำให้การคิวรีแบบแบ่งหน้า เป็นเรื่องที่ง่ายดายขึ้นดังตัวอย่างนี้
{syntaxhighlighter brush:sql}SELECT *
FROM Sales.Customer
ORDER BY CustomerID
OFFSET 100 ROWS
FETCH NEXT 50 ROWS ONLY;{/syntaxhighlighter}
ซึ่งหมายถึงให้ข้ามไป 100 แถว (หรือ 2 หน้า) แล้วนำมาเพียง 50 แถว
หากส่วนของ FETCH ไม่มี จะหมายถึง เริ่มตั้งแต่แถวที่ 101 เป็นต้นไปนั่นเอง
ที่มา: MSDN
Comments
น่าจะมีมาตั้งนานแล้วใช้ตั้งแต่เรียน mysql แรกๆ
มาเจอ mssql ต้อง query แบบแรกถึงกับเงิบเลย
{$user} was not an Imposter