[SQL] การ Query ข้อมูลแบบแบ่ง Page บน Microsoft SQL Server

oum_nomercy
Arcadia Software Development
1 min readDec 13, 2018

ในการ Query เพื่อให้ได้ข้อมูลทั้งหมดบน Database โดยไม่ต้องใช้ where clause เพื่อนำมาแสดงผลนั้น ส่วนใหญ่อาจะทำบนส่วนที่ execute Query เช่น ADO, Entity Framework หรืออื่นๆ แล้วแต่ผู้พัฒนา แต่บางท่านอาจจะไม่รู้ว่าเราสามารถ Query ข้อมูลแบบแบ่ง page ได้จาก SQL command ได้โดยตรง ตัวอย่างเช่น หากต้องการแบ่งข้อมูลหน้าละ 10 records และต้องการแสดงข้อมูลใน page ที่ 2 ซึ่งหมายความว่าต้องการแสดงข้อมูล record ที่ 11 ถึง record ที่ 20

โดยใช้ OFFSET FETCH Clause สามารถที่จะแสดงผลตามตัวอย่างที่กล่าวมาได้

รุปแบบของ OFFSET FETCH Clause

SELECT <column-names, ... >
FROM <table-name>
ORDER BY <column-names, ...>
OFFSET <n> ROWS
FETCH NEXT <m> ROWS ONLY

ตัวอย่างข้อมูล Customers มีทั้งหมด 91 records

ลองใช้ OFFSET FETCH Clause แบ่งเป็นทีละ 10 records ซึ่งกำหนดได้ที่ FETCH NEXT m ROWS ONLY ส่วนจะเริ่มแสดงผลตั้งแต่ record ไหนกำหนดที่ OFFSET n ROWS ตัวอย่างด้านล่างให้แสดงตั้งแต่ record ที่ 11– 20 ซึ่งก็คือ page ที่ 2

SELECT *
FROM [dbo].[Customers]
ORDER BY [CustomerID]
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

Result

เราสามารถนำ OFFSET FETCH Clause ไปประยุกต์ใช้งานกับ Application ได้ตามต้องการ

ศึกษาข้อมูลเพิ่มเติมได้ที่

https://technet.microsoft.com/en-us/library/gg699618(v=sql.110).aspx

--

--