[SQL] การ Query ข้อมูลแบบแบ่ง Page บน Microsoft SQL Server
ในการ 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 ได้ตามต้องการ
ศึกษาข้อมูลเพิ่มเติมได้ที่