Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में सबसे अधिक ऑटो-इन्क्रीमेंटेड नंबर कैसे प्राप्त करें?

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() गैप के बावजूद वास्तविक अधिकतम देता है
  1. - MySQL डेटाबेस में टेबल्स की संख्या कैसे गिनें

    कुल टेबल्स की संख्या गिनने के लिए, table_schema के साथ count(*) की अवधारणा का उपयोग करें। सबसे पहले, यह जांचने के लिए कि हमारे डेटाबेस business में कितनी टेबल्स मौजूद हैं, हमें show कमांड का उपयोग करने की आवश्यकता है। show tables; निम्नलिखित आउटपुट डेटाबेस business में सभी टेबल्स प्रदर्शित करता है

  1. MySQL में डेटाबेस डायग्राम ऑटो-जेनरेट कैसे करें? MySQL में डेटाबेस डायग्राम ऑटो-जेनरेट कैसे करें?

    MySQL Workbench में रिवर्स इंजीनियर से ER डायग्राम जनरेट करें MySQL Workbench एक अंतर्निहित रिवर्स इंजीनियर सुविधा प्रदान करता है जो मौजूदा डेटाबेस से ER (एंटिटी-रिलेशनशिप) डायग्राम स्वचालित रूप से बनाता है। चरण-दर-चरण प्रक्रिया MySQL Workbench खोलें और अपने सर्वर से कनेक्ट करें। मेनू बार में Da

  1. डेटाबेस में टेबलों की संख्या प्रदर्शित करने का MySQL क्वेरी क्या है? डेटाबेस में टेबलों की संख्या प्रदर्शित करने का MySQL क्वेरी क्या है?

    मान लीजिए, यहाँ मैं WEB डेटाबेस का उपयोग कर रहा हूँ। हमें डेटाबेस WEB में टेबलों की संख्या ज्ञात करनी है। इसके लिए MySQL में INFORMATION_SCHEMA.TABLES का उपयोग करें। टेबलों की संख्या प्रदर्शित करने का क्वेरी निम्न है: mysql> select count(table_name) as TotalNumberOfTablesInWebDatabase -> from