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

MySQL में INSERT ON DUPLICATE KEY UPDATE से एंट्री मौजूद होने पर अन्य कॉलम ओवरराइट करें

INSERT ... ON DUPLICATE KEY UPDATE का उपयोग करके: यदि यूनिक/प्राइमरी की टकराव होता है तो नई पंक्ति डालने के बजाय मौजूदा पंक्ति अपडेट करें (अपसर्ट/upsert)।

टेबल बनाएं (यूनिक की पर FirstName)

mysql> CREATE TABLE DemoTable1891 (
    FirstName VARCHAR(20),
    UNIQUE KEY(FirstName)
);

डालें/अपडेट करें

mysql> INSERT INTO DemoTable1891 VALUES('Chris') ON DUPLICATE KEY UPDATE FirstName = 'Robert'; -- नई
mysql> INSERT INTO DemoTable1891 VALUES('David') ON DUPLICATE KEY UPDATE FirstName = 'Robert'; -- नई
mysql> INSERT INTO DemoTable1891 VALUES('Chris') ON DUPLICATE KEY UPDATE FirstName = 'Robert'; -- डुप्लिकेट → अपडेट

परिणाम:

+-----------+
| FirstName |
+-----------+
| David     |
| Robert    |
+-----------+

व्याख्या

  1. पहली 'Chris' → डाली गई।
  2. 'David' → डाली गई।
  3. दूसरी 'Chris' → यूनिक की टकराव → UPDATE FirstName = 'Robert' 실행 → 'Chris' → 'Robert' बदला।

प्रभावित पंक्ति संख्या

  • नई पंक्ति: 1
  • अपडेट: 2
  • कोई बदलाव नहीं: 0

एकाधिक कॉलम अपडेट

INSERT INTO users(id, name, email, updated_at)
VALUES(1, 'John', 'john@new.com', NOW())
ON DUPLICATE KEY UPDATE
    name = VALUES(name),
    email = VALUES(email),
    updated_at = VALUES(updated_at);

VALUES() फ़ंक्शन

VALUES(col) → INSERT में दिए गए मान को संदर्भित करता है (पुनरावृत्ति बचाता है)।

सावधानी

  • यूनिक/प्राइमरी की बाधा आवश्यक।
  • ट्रिगर: BEFORE INSERT, BEFORE UPDATE दोनों फायर होते हैं।
  • आत्म-वृद्धि आईडी पर टकराव होने पर आईडी "छोड़" दी जाती है (गैप)।
  1. - MySQL में कोई भी पंक्ति और कॉलम SELECT न करने का तरीका?

    SELECT NULL और WHERE FALSE का उपयोग करके खाली परिणाम प्राप्त करना किसी भी पंक्ति और कॉलम को प्रदर्शित न करने के लिए SELECT NULL और WHERE FALSE का उपयोग करें: SELECT NULL FROM yourTableName WHERE FALSE; आइए पहले एक टेबल बनाते हैं: CREATE TABLE DemoTable1367 ( Id INT NOT NULL AUTO_INCREMENT PRI

  1. - MySQL में एग्रीगेट फंक्शन और अन्य सभी कॉलम चुनना

    सबक्वेरी के साथ प्रत्येक पंक्ति पर एग्रीगेट मान दिखाना पहले टेबल बनाएं: create table DemoTable1621 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20), StudentMarks int ); Query OK, 0 rows affected (1.69 sec) रिकॉर्ड डालें: insert into DemoTable1621(StudentName,StudentMark

  1. - MySQL संस्करण कैसे जांचें

    आइए समझते हैं कि उपयोगकर्ता वर्तमान में जो MySQL संस्करण चला रहा है, उसकी जांच कैसे करें: कंसोल पर क्वेरी दर्ज करने से पहले, यह सुनिश्चित करना महत्वपूर्ण है कि उपयोगकर्ता सर्वर से जुड़ा हुआ है। MySQL संस्करण जांचें नीचे दी गई क्वेरी सर्वर के संस्करण संख्या और वर्तमान तारीख देगी। mysql> SELECT