MySQL में UNION ALL के साथ बहु-टेबल INSERT
MySQL INSERT ... SELECT के साथ UNION ALL का उपयोग करके एक ही क्वेरी में एक स्रोत टेबल से डेटा चुनकर दो (या अधिक) लक्ष्य टेबल में डाल सकता है।
उदाहरण: एक स्रोत से दो टेबल में डालना
mysql> CREATE TABLE DemoTable1 (
-> StudentName VARCHAR(20),
-> StudentMarks INT
-> );
Query OK, 0 rows affected (0.67 sec)
mysql> CREATE TABLE DemoTable2 (
-> Name VARCHAR(20)
-> );
Query OK, 0 rows affected (0.61 sec)
mysql> INSERT INTO DemoTable2 VALUES ('Chris');
Query OK, 1 row affected (0.12 sec)
mysql> SELECT * FROM DemoTable2;
+-------+
| Name |
+-------+
| Chris |
+-------+
1 row in set (0.00 sec)
UNION ALL के साथ INSERT SELECT
mysql> INSERT INTO DemoTable1
-> SELECT Name, 89 FROM DemoTable2
-> UNION ALL
-> SELECT Name, 98 FROM DemoTable2;
Query OK, 2 rows affected (0.15 sec)
Records: 2 Duplicates: 0 Warnings: 0
परिणाम
mysql> SELECT * FROM DemoTable1; +-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 89 | | Chris | 98 | +-------------+--------------+ 2 rows in set (0.00 sec)
यह कैसे काम करता है
SELECT Name, 89 FROM DemoTable2→ 'Chris', 89 उत्पन्न करता हैSELECT Name, 98 FROM DemoTable2→ 'Chris', 98 उत्पन्न करता हैUNION ALLदोनों परिणाम सेट जोड़ता है (डुप्लिकेट नहीं हटाता)INSERT INTO DemoTable1संयुक्त पंक्तियाँ डालता है
UNION बनाम UNION ALL
| पहलू | UNION | UNION ALL |
|---|---|---|
| डुप्लिकेट | हटाता है | रखता है (तेज़) |
| प्रदर्शन | धीमा (सॉर्ट/अद्वितीय) | तेज़ |
| उपयोग | जब अद्वितीय परिणाम चाहिए | जब सभी पंक्तियाँ चाहिए |