Tags:
Node Thumbnail

การคิวรีข้อมูลแบบแบ่งหน้า เช่น ต้องการแถวข้อมูลในหน้าที่ 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

Get latest news from Blognone

Comments

By: kurosame
ContributoriPhone
on 21 May 2012 - 12:25 #422387
kurosame's picture

น่าจะมีมาตั้งนานแล้วใช้ตั้งแต่เรียน mysql แรกๆ
มาเจอ mssql ต้อง query แบบแรกถึงกับเงิบเลย


{$user} was not an Imposter