LIMIT ... OFFSET सिंटैक्स
MySQL में पहले N परिणाम छोड़कर (skip) बाद के परिणाम प्राप्त करने के लिए LIMIT के साथ OFFSET का उपयोग करें।
सिंटैक्स
SELECT * FROM yourTableName
LIMIT row_count OFFSET offset_value;
या संक्षिप्त रूप:
SELECT * FROM yourTableName
LIMIT offset_value, row_count;
उदाहरण: पहले 10 रिकॉर्ड छोड़ें
1. टेबल बनाएं और 15 रिकॉर्ड डालें
mysql> CREATE TABLE SkipFirstTenRecords (
-> StudentId INT,
-> StudentName VARCHAR(200)
-> );
Query OK, 0 rows affected (0.53 sec)
mysql> INSERT INTO SkipFirstTenRecords VALUES
-> (100,'John'), (101,'Johnson'), (102,'Carol'), (103,'Smith'),
-> (104,'Bob'), (105,'David'), (106,'Sam'), (107,'Taylor'),
-> (108,'Ramit'), (109,'Belly'), (110,'Aaron'), (111,'Peter'),
-> (112,'Travis'), (113,'Alex'), (114,'Pat');
2. सभी रिकॉर्ड देखें
mysql> SELECT * FROM SkipFirstTenRecords;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 100 | John |
| 101 | Johnson |
| 102 | Carol |
| 103 | Smith |
| 104 | Bob |
| 105 | David |
| 106 | Sam |
| 107 | Taylor |
| 108 | Ramit |
| 109 | Belly |
| 110 | Aaron |
| 111 | Peter |
| 112 | Travis |
| 113 | Alex |
| 114 | Pat |
+-----------+-------------+
15 rows in set (0.00 sec)
3. पहले 10 छोड़कर अगले 10 लें
mysql> SELECT * FROM SkipFirstTenRecords
-> LIMIT 10 OFFSET 10;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 110 | Aaron |
| 111 | Peter |
| 112 | Travis |
| 113 | Alex |
| 114 | Pat |
+-----------+-------------+
5 rows in set (0.00 sec)
व्याख्या: OFFSET 10 पहले 10 पंक्तियाँ छोड़ता है, LIMIT 10 अधिकतम 10 पंक्तियाँ लौटाता है। चूंकि केवल 5 शेष थीं, इसलिए 5 लौटीं।
पेजिनेशन के लिए सामान्य पैटर्न
-- पेज 1 (पहले 10)
SELECT * FROM table LIMIT 10 OFFSET 0;
-- पेज 2 (अगले 10)
SELECT * FROM table LIMIT 10 OFFSET 10;
-- पेज N
SELECT * FROM table LIMIT 10 OFFSET (page_number - 1) * 10;
प्रदर्शन चेतावनी
बड़े ऑफसेट (जैसे OFFSET 1000000) धीमे होते हैं क्योंकि MySQL को छोड़ने वाली पंक्तियाँ भी पढ़नी पड़ती हैं। बड़े डेटासेट के लिए कर्सर-आधारित पेजिनेशन (WHERE id > last_seen_id) बेहतर है।