MySQL टेबल से अधिकतम ID वाली पंक्ति कैसे प्राप्त करें
किसी टेबल से सबसे अधिक (उच्चतम) ID वाली रो प्राप्त करने का सबसे सरल और कुशल तरीका ORDER BY ... DESC के साथ LIMIT 1 का उपयोग करना है।
सिंटैक्स:
SELECT * FROM yourTableName ORDER BY yourColumnName DESC LIMIT 1 OFFSET 0;
OFFSET 0 वैकल्पिक है (डिफ़ॉल्ट 0 ही होता है)।
व्यावहारिक उदाहरण
1. टेबल बनाएं:
mysql> CREATE TABLE HighestIdOrderBy (
-> EmployeeId INT,
-> EmployeeName VARCHAR(200)
-> );
Query OK, 0 rows affected (0.58 sec)
2. डेटा डालें:
mysql> INSERT INTO HighestIdOrderBy VALUES(200,'David'); mysql> INSERT INTO HighestIdOrderBy VALUES(1000,'Bob'); mysql> INSERT INTO HighestIdOrderBy VALUES(600,'John'); mysql> INSERT INTO HighestIdOrderBy VALUES(300,'Johnson'); mysql> INSERT INTO HighestIdOrderBy VALUES(100,'Carol');
3. सभी रिकॉर्ड:
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 200 | David | | 1000 | Bob | | 600 | John | | 300 | Johnson | | 100 | Carol | +------------+--------------+ 5 rows in set (0.00 sec)
4. अधिकतम ID वाली रो प्राप्त करें:
mysql> SELECT * FROM HighestIdOrderBy
-> ORDER BY EmployeeId DESC
-> LIMIT 1 OFFSET 0;
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 1000 | Bob | +------------+--------------+ 1 row in set (0.00 sec)
वैकल्पिक तरीके:
तरीका 2: MAX() फंक्शन के साथ सबक्वेरी
SELECT * FROM yourTableName WHERE yourColumnName = (SELECT MAX(yourColumnName) FROM yourTableName);
तरीका 3: केवल अधिकतम मान चाहिए तो
SELECT MAX(yourColumnName) FROM yourTableName;
कौन सा तरीका बेहतर?
| तरीका | फायदे | नुकसान |
|---|---|---|
| ORDER BY DESC LIMIT 1 | सरल, पूरी रो देता है, इंडेक्स उपयोग कर सकता है | बहुत बड़ी टेबल पर धीमा हो सकता है |
| MAX() सबक्वेरी | इंडेक्स के साथ बहुत तेज | दो क्वेरी चलती हैं |
| सिर्फ MAX() | सबसे तेज | केवल मान देता है, पूरी रो नहीं |
सुझाव: अगर पूरी रो चाहिए और ID पर इंडेक्स है, तो ORDER BY id DESC LIMIT 1 सबसे अच्छा है।