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

MySQL में INSERT MAX()+1 कैसे इम्प्लीमेंट करें?

COALESCE() के साथ ऑटो-इन्क्रीमेंट जैसा व्यवहार

किसी नाम के लिए अधिकतम ID + 1 के साथ नया रिकॉर्ड डालने के लिए:

INSERT INTO yourTableName(col1, col2)
SELECT 1 + COALESCE((SELECT MAX(col1) FROM yourTableName WHERE col2 = 'value'), 0), 'value';

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE InsertMaxPlus1Demo (Id INT, Name VARCHAR(20));
mysql> INSERT INTO InsertMaxPlus1Demo(Id, Name) 
    -> VALUES(1, 'John'),(1, 'Mike'),(2, 'John'),(1, 'Larry'),(3, 'John'),(2, 'David');

वर्तमान डेटा

+------+-------+
| Id   | Name  |
+------+-------+
|    1 | John  |
|    1 | Mike  |
|    2 | John  |
|    1 | Larry |
|    3 | John  |
|    2 | David |
+------+-------+

'John' के लिए MAX(Id)+1 डालना

mysql> INSERT INTO InsertMaxPlus1Demo (Id, Name)
    -> SELECT 1 + COALESCE((SELECT MAX(Id) FROM InsertMaxPlus1Demo WHERE Name = 'John'), 0), 'John';

John का वर्तमान MAX(Id) = 3, नया Id = 4।

परिणाम

+------+-------+
| Id   | Name  |
+------+-------+
|    1 | John  |
|    1 | Mike  |
|    2 | John  |
|    1 | Larry |
|    3 | John  |
|    2 | David |
|    4 | John  |
+------+-------+

COALESCE NULL को 0 में बदलता है (यदि कोई रिकॉर्ड नहीं मिलता)।

  1. - MySQL में ORDER BY DESC LIMIT OFFSET से दूसरा अधिकतम मान ढूंढें

    MySQL में ORDER BY ... DESC LIMIT 1 OFFSET 1 का उपयोग करके दूसरा सबसे बड़ा मान (second maximum) प्राप्त कर सकते हैं। सिंटैक्स SELECT * FROM टेबल_नाम ORDER BY कॉलम_नाम DESC LIMIT 1 OFFSET 1; उदाहरण 1. टेबल बनाएं CREATE TABLE DemoTable (Value INT); 2. डेटा डालें INSERT INTO DemoTable VALUES(1),

  1. - MySQL में INSERT ... SELECT क्वेरी का उपयोग कैसे करें?

    MySQL में INSERT ... SELECT स्टेटमेंट एक ही क्वेरी में एक तालिका से दूसरी तालिका में डेटा कॉपी करने या मानों की गणना करके डालने की अनुमति देता है। सिंटैक्स INSERT INTO target_table (col1, col2, col3, ...) SELECT col1, col2, col3, ... FROM source_table WHERE condition; उदाहरण: मानों को सीधे चुनकर ड

  1. - MySQL में एकल INSERT से एकाधिक रिकॉर्ड तेजी से डालें

    बल्क इंसर्ट सिंटैक्स से प्रदर्शन सुधारें एक ही INSERT स्टेटमेंट में कई मान सेट अल्पविराम से अलग करके डालें। सिंटैक्स: insert into yourTableName values(val1,val2,...),(val1,val2,...),...; उदाहरण: mysql> create table DemoTable2007 ( Amount1 int, Amount2 int, Amount3 int ); Query OK, 0 rows affected