การใช้ LIMIT OFFSET เพื่อข้ามแถวและจำกัดจำนวนผลลัพธ์
ใน MySQL เราสามารถใช้ LIMIT offset, row_count เพื่อข้ามจำนวนแถวที่กำหนด (offset) และแสดงจำนวนแถวที่ต้องการ (row_count) หลังจากเรียงลำดับแล้ว
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
Id INT,
Name VARCHAR(100)
);
Query OK, 0 rows affected (0.94 sec)
mysql> INSERT INTO DemoTable VALUES(10,'Chris');
mysql> INSERT INTO DemoTable VALUES(1,'David');
mysql> INSERT INTO DemoTable VALUES(4,'Bob');
mysql> INSERT INTO DemoTable VALUES(6,'Sam');
mysql> INSERT INTO DemoTable VALUES(7,'Mike');
mysql> INSERT INTO DemoTable VALUES(5,'Carol');
mysql> INSERT INTO DemoTable VALUES(9,'John');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+------+-------+
| Id | Name |
+------+-------+
| 10 | Chris |
| 1 | David |
| 4 | Bob |
| 6 | Sam |
| 7 | Mike |
| 5 | Carol |
| 9 | John |
+------+-------+
7 rows in set (0.00 sec)
คำสั่งเรียง DESC ข้าม 3 แถว แล้วแสดง 4 แถว
mysql> SELECT Name FROM DemoTable ORDER BY Id DESC LIMIT 3, 4;
ผลลัพธ์:
+-------+
| Name |
+-------+
| Sam |
| Carol |
| Bob |
| David |
+-------+
4 rows in set (0.00 sec)
คำอธิบาย
ORDER BY Id DESC: เรียง Id จากมากไปน้อย (10, 9, 7, 6, 5, 4, 1)LIMIT 3, 4: ข้าม 3 แถวแรก (offset=3) แล้วแสดง 4 แถวถัดไป (row_count=4)- แถวที่ 1-3 คือ Id 10, 9, 7 → ข้ามไป แสดงแถวที่ 4-7 คือ Id 6, 5, 4, 1 → ชื่อ Sam, Carol, Bob, David
- รูปแบบ
LIMIT offset, row_countหรือLIMIT row_count OFFSET offset