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

MySQL में डुप्लिकेट रिकॉर्ड बदलने के लिए INSERT ON DUPLICATE KEY UPDATE का उपयोग

MySQL में डुप्लिकेट रिकॉर्ड को संभालने का सबसे कुशल तरीका INSERT ... ON DUPLICATE KEY UPDATE स्टेटमेंट है। यह डुप्लिकेट की त्रुटि से बचाता है और मौजूदा रिकॉर्ड को अपडेट करता है।

सिंटैक्स

INSERT INTO टेबल_नाम (कॉलम1, कॉलम2, ...)
VALUES (मान1, मान2, ...)
ON DUPLICATE KEY UPDATE
    कॉलम1 = नया_मान1,
    कॉलम2 = नया_मान2, ...;

उदाहरण

1. यूनिक कंस्ट्रेंट के साथ टेबल बनाएं

mysql> CREATE TABLE DemoTable (
    -> Id INT,
    -> Name VARCHAR(20),
    -> UNIQUE(Id, Name)
    -> );

2. डेटा डालें (डुप्लिकेट हैंडलिंग के साथ)

mysql> INSERT INTO DemoTable VALUES(101, 'Chris') 
    -> ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
Query OK, 1 row affected

mysql> INSERT INTO DemoTable VALUES(102, 'Mike') 
    -> ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
Query OK, 1 row affected

mysql> INSERT INTO DemoTable VALUES(101, 'Chris') 
    -> ON DUPLICATE KEY UPDATE Id=10001, Name='Robert';
Query OK, 2 rows affected  -- डुप्लिकेट मिला, अपडेट हुआ

3. परिणाम देखें

mysql> SELECT * FROM DemoTable;
+-------+--------+
| Id    | Name   |
+-------+--------+
| 102   | Mike   |
| 10001 | Robert |
+-------+--------+

क्यों यह बेहतर है?

  • एटॉमिक ऑपरेशन: इंसर्ट और अपडेट एक ही क्वेरी में
  • रेस कंडीशन मुक्त: concurrent access में सुरक्षित
  • प्रदर्शन: अलग SELECT + INSERT/UPDATE से तेज़
  • सरल कोड: एप्लिकेशन लॉजिक सरल रहता है

ध्यान दें

यूनिक इंडेक्स या प्राइमरी की होना आवश्यक है ताकि MySQL डुप्लिकेट का पता लगा सके।

  1. - MySQL में संबंधित डुप्लिकेट रिकॉर्ड का योग करें

    आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> StudentName varchar(20), -> StudentMarks int -> ); Query OK, 0 rows affected (0.68 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(Chris,50); Query OK, 1 row affected

  1. - MySQL में एकाधिक टेबल्स से रिकॉर्ड इन्सर्ट कैसे करें?

    MySQL में दो या अधिक टेबल्स से डेटा संयोजित करके तीसरी टेबल में इन्सर्ट करने के लिए, INSERT INTO ... SELECT के साथ क्रॉस जॉइन (कॉमा सिंटैक्स) या स्पष्ट JOIN का उपयोग करें। यह कार्टेशियन प्रोडक्ट (सभी संयोजन) या मिलान वाले संयोजन बना सकता है। उदाहरण: Name और Age टेबल से Student टेबल में कार्टेशियन प

  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