MySQL में अंतिम N पंक्तियां प्राप्त करने के लिए ORDER BY ... DESC LIMIT N का उपयोग करें, फिर आवश्यकतानुसार पुनः क्रमबद्ध करें।
सिंटैक्स
SELECT * FROM टेबल_नाम ORDER BY कॉलम_नाम DESC LIMIT 30;
उदाहरण: अंतिम 30 पंक्तियां (ID अवरोही क्रम)
1. टेबल बनाएं (ऑटो-इन्क्रीमेंट ID)
mysql> CREATE TABLE DemoTable1567 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
-> );
2. 37 पंक्तियां डालें
mysql> INSERT INTO DemoTable1567 VALUES(),(),(),()...; -- 37 बार
3. अंतिम 30 पंक्तियां (अवरोही क्रम में)
mysql> SELECT * FROM DemoTable1567
-> ORDER BY Id DESC
-> LIMIT 30;
4. परिणाम (ID 37 से 8 तक)
+----+ | Id | +----+ | 37 | | 36 | | 35 | ... | 10 | | 9 | | 8 | +----+ 30 rows in set
आरोही क्रम में अंतिम 30 पंक्तियां
SELECT * FROM (
SELECT * FROM DemoTable1567
ORDER BY Id DESC
LIMIT 30
) AS t
ORDER BY Id ASC;
परिणाम (ID 8 से 37 तक)
+----+ | Id | +----+ | 8 | | 9 | | 10 | ... | 35 | | 36 | | 37 | +----+
प्रदर्शन विचार
ORDER BY प्राथमिक_कुंजी DESC LIMIT Nबहुत तेज़ (इंडेक्स उपयोग)- गैर-इंडेक्स कॉलम पर धीमा (फाइलसॉर्ट)
- बड़े ऑफसेट के लिए
WHERE id > (SELECT MAX(id) - 30 ...)बेहतर
सापेक्ष समय के लिए
-- पिछले 30 दिन की पंक्तियां SELECT * FROM logs WHERE created_at >= NOW() - INTERVAL 30 DAY ORDER BY created_at DESC;