DESC क्रम में LIMIT का उपयोग
सबसे हाल के (अंतिम) रिकॉर्ड्स प्राप्त करने के लिए ORDER BY ... DESC के साथ LIMIT N का उपयोग करें।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable820(
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
CustomerName VARCHAR(100)
);
Query OK, 0 rows affected (0.53 sec)
6 रिकॉर्ड्स इन्सर्ट करना
mysql> INSERT INTO DemoTable820(CustomerName) VALUES
('Chris'),('Robert'),('David'),('Bob'),('Carol'),('Adam');
Query OK, 6 rows affected (...)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable820;
+----+--------------+ | Id | CustomerName | +----+--------------+ | 1 | Chris | | 2 | Robert | | 3 | David | | 4 | Bob | | 5 | Carol | | 6 | Adam | +----+--------------+ 6 rows in set (0.00 sec)
अंतिम 5 रिकॉर्ड्स की क्वेरी
mysql> SELECT * FROM DemoTable820 ORDER BY Id DESC LIMIT 5;
परिणाम
+----+--------------+ | Id | CustomerName | +----+--------------+ | 6 | Adam | | 5 | Carol | | 4 | Bob | | 3 | David | | 2 | Robert | +----+--------------+ 5 rows in set (0.00 sec)
क्वेरी व्याख्या
ORDER BY Id DESC- उच्चतम ID (नवीनतम) पहलेLIMIT 5- केवल पहले 5 रो लौटाएं- परिणाम डिफ़ॉल्ट रूप से DESC क्रम में आता है
आरोही क्रम में परिणाम प्राप्त करना (सबक्वेरी)
यदि परिणाम पुराने से नए क्रम में चाहिए:
SELECT * FROM (
SELECT * FROM DemoTable820 ORDER BY Id DESC LIMIT 5
) AS recent ORDER BY Id ASC;
परिणाम
+----+--------------+ | Id | CustomerName | +----+--------------+ | 2 | Robert | | 3 | David | | 4 | Bob | | 5 | Carol | | 6 | Adam | +----+--------------+
टाइमस्टैम्प कॉलम के साथ
SELECT * FROM DemoTable820 ORDER BY CreatedAt DESC LIMIT 5;
OFFSET के साथ पेजिनेशन
-- पेज 1 (नवीनतम 5) SELECT * FROM DemoTable820 ORDER BY Id DESC LIMIT 5 OFFSET 0; -- पेज 2 (अगले 5) SELECT * FROM DemoTable820 ORDER BY Id DESC LIMIT 5 OFFSET 5;
LIMIT सिंटैक्स विविधताएं
| सिंटैक्स | अर्थ |
|---|---|
LIMIT 5 | पहले 5 रो |
LIMIT 5 OFFSET 10 | 11वें से 15वें रो |
LIMIT 10, 5 | OFFSET 10, LIMIT 5 (MySQL-विशिष्ट) |
प्रदर्शन नोट
ORDER BY ... LIMITइंडेक्स का उपयोग कर सकता है यदि ORDER BY कॉलम इंडेक्स्ड है- बड़े OFFSET मान धीमे होते हैं (MySQL को सभी पूर्ववर्ती रो स्कैन करने पड़ते हैं)
- डीप पेजिनेशन के लिए "सीक मेथड" (WHERE Id > last_seen_id) बेहतर है