INSERT IGNORE ... SELECT से दो टेबल मर्ज करें
दो टेबल को मर्ज करने के लिए (दूसरे से पहले में डेटा कॉपी करना, डुप्लिकेट से बचते हुए), INSERT IGNORE INTO ... SELECT का उपयोग करें।
सिंटैक्स
INSERT IGNORE INTO टेबल_लक्ष्य SELECT * FROM टेबल_स्रोत;
उदाहरण
1. पहली टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE MergeDemo1 (
-> id INT PRIMARY KEY,
-> Name VARCHAR(200)
-> );
mysql> INSERT INTO MergeDemo1 VALUES(1, 'John');
2. दूसरी टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE MergeDemo2 (
-> id INT PRIMARY KEY,
-> Name VARCHAR(200)
-> );
mysql> INSERT INTO MergeDemo2 VALUES(2, 'David');
3. मर्ज करें (MergeDemo2 → MergeDemo1)
mysql> INSERT IGNORE INTO MergeDemo1 SELECT * FROM MergeDemo2;
4. परिणाम सत्यापित करें
mysql> SELECT * FROM MergeDemo1;
+----+-------+ | id | Name | +----+-------+ | 1 | John | | 2 | David | +----+-------+
महत्वपूर्ण बिंदु
- INSERT IGNORE: डुप्लिकेट की त्रुटियों को चेतावनी में बदल देता है और जारी रखता है
- कॉलम क्रम/संख्या मेल खाना चाहिए: SELECT सूची लक्ष्य टेबल कॉलम से मेल खानी चाहिए
- प्राइमरी/यूनिक की डुप्लिकेट निर्धारित करती है
वैकल्पिक: ON DUPLICATE KEY UPDATE
यदि डुप्लिकेट पर अपडेट करना चाहते हैं:
INSERT INTO MergeDemo1 SELECT * FROM MergeDemo2 ON DUPLICATE KEY UPDATE Name = VALUES(Name);
अन्य मर्ज परिदृश्य
- कॉलम सबसेट:
INSERT INTO t1 (a,b) SELECT a,b FROM t2 - शर्तों के साथ:
INSERT INTO t1 SELECT * FROM t2 WHERE condition - अलग कॉलम नाम:
INSERT INTO t1 (col1) SELECT col2 FROM t2 - बड़े डेटा: बैच में करें या
LOAD DATAउपयोग करें