MySQL में INSERT INTO ... SELECT ... UNION ALL ... SELECT का उपयोग करके एक ही क्वेरी में एक टेबल से डेटा चुनकर दूसरी टेबल में एकाधिक पंक्तियां डाल सकते हैं।
उदाहरण
1. लक्ष्य टेबल बनाएं
mysql> CREATE TABLE DemoTable1 (
-> StudentName VARCHAR(20),
-> StudentMarks INT
-> );
2. स्रोत टेबल बनाएं
mysql> CREATE TABLE DemoTable2 (Name VARCHAR(20));
mysql> INSERT INTO DemoTable2 VALUES('Chris');
3. एक क्वेरी में चयन और सम्मिलन
mysql> INSERT INTO DemoTable1
-> SELECT Name, 89 FROM DemoTable2
-> UNION ALL
-> SELECT Name, 98 FROM DemoTable2;
Query OK, 2 rows affected
4. परिणाम देखें
mysql> SELECT * FROM DemoTable1;
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 89 | | Chris | 98 | +-------------+--------------+
व्याख्या
- पहला
SELECT: 'Chris', 89 चुनता है UNION ALL: परिणाम सेट जोड़ता है (डुप्लिकेट रखता है)- दूसरा
SELECT: 'Chris', 98 चुनता है - दोनों पंक्तियां
DemoTable1में डाली जाती हैं
UNION vs UNION ALL
| ऑपरेटर | डुप्लिकेट | प्रदर्शन |
|---|---|---|
| UNION | हटाता है | धीमा (सॉर्ट/हैश) |
| UNION ALL | रखता है | तेज़ |
कॉलम मिलान
- प्रत्येक SELECT में समान संख्या में कॉलम होने चाहिए
- स्थिति के अनुसार कॉलम मिलते हैं (नाम नहीं)
- डेटा प्रकार संगत होने चाहिए
उन्नत: एकाधिक स्रोत टेबल
INSERT INTO target (name, score) SELECT name, score FROM table1 WHERE active = 1 UNION ALL SELECT name, score FROM table2 WHERE active = 1 UNION ALL SELECT 'Manual Entry', 100; -- स्थिर मान भी जोड़ सकते हैं