ORDER BY DESC और LIMIT का उपयोग
ऑटो-इन्क्रीमेंट कॉलम में सबसे बड़ा मान (अंतिम इन्सर्ट किया गया ID) प्राप्त करने के लिए अवरोही क्रम में क्रमबद्ध करके पहली पंक्ति लें।
सिंटैक्स
SELECT * FROM yourTableName ORDER BY autoIncColumn DESC LIMIT 1;
उदाहरण
1. टेबल बनाना
mysql> CREATE TABLE DemoTable (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(20)
);
Query OK, 0 rows affected (0.56 sec)
2. डेटा डालना
mysql> INSERT INTO DemoTable(UserName) VALUES('John');
mysql> INSERT INTO DemoTable(UserName) VALUES('Larry');
mysql> INSERT INTO DemoTable(UserName) VALUES('Chris');
mysql> INSERT INTO DemoTable(UserName) VALUES('Bob');
mysql> INSERT INTO DemoTable(UserName) VALUES('Carol');
mysql> INSERT INTO DemoTable(UserName) VALUES('David');
mysql> INSERT INTO DemoTable(UserName) VALUES('Robert');
3. सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable;
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | John | | 2 | Larry | | 3 | Chris | | 4 | Bob | | 5 | Carol | | 6 | David | | 7 | Robert | +--------+----------+ 7 rows in set (0.00 sec)
4. सबसे अधिक ऑटो-इन्क्रीमेंट मान प्राप्त करना
mysql> SELECT * FROM DemoTable ORDER BY UserId DESC LIMIT 0, 1;
+--------+----------+ | UserId | UserName | +--------+----------+ | 7 | Robert | +--------+----------+ 1 row in set (0.00 sec)
वैकल्पिक तरीके
MAX() फंक्शन (अधिक कुशल)
SELECT MAX(UserId) FROM DemoTable;
+--------------+ | MAX(UserId) | +--------------+ | 7 | +--------------+
लाभ: इंडेक्स का उपयोग करता है, पूरी टेबल स्कैन नहीं करता।
LAST_INSERT_ID() (केवल वर्तमान सत्र)
SELECT LAST_INSERT_ID();
केवल वर्तमान कनेक्शन द्वारा अंतिम इन्सर्ट किया गया AUTO_INCREMENT मान लौटाता है।
INFORMATION_SCHEMA (अगला मान)
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'yourDB' AND TABLE_NAME = 'DemoTable';
यह अगला मान दिखाता है जो उपयोग होगा, वर्तमान अधिकतम नहीं।
तुलना तालिका
| तरीका | लौटाता है | स्कोप | प्रदर्शन |
|---|---|---|---|
| MAX(column) | वर्तमान अधिकतम | पूरा टेबल | ✅ तेज़ (इंडेक्स) |
| ORDER BY DESC LIMIT 1 | पूरी पंक्ति | पूरा टेबल | अच्छा (इंडेक्स) |
| LAST_INSERT_ID() | सत्र का अंतिम इन्सर्ट | वर्तमान सत्र | ✅ सबसे तेज़ |
| INFORMATION_SCHEMA | अगला मान | मेटाडेटा | तेज़ |
सर्वोत्तम अभ्यास
- केवल ID चाहिए तो
MAX(UserId)उपयोग करें - पूरी पंक्ति चाहिए तो
ORDER BY UserId DESC LIMIT 1उपयोग करें - इन्सर्ट के तुरंत बाद उसी सत्र में
LAST_INSERT_ID()उपयोग करें - डिलीट के बाद गैप हो सकते हैं - MAX() गैप के बावजूद वास्तविक अधिकतम देता है