MySQL में दो या अधिक टेबल्स से डेटा संयोजित करके तीसरी टेबल में इन्सर्ट करने के लिए, INSERT INTO ... SELECT के साथ क्रॉस जॉइन (कॉमा सिंटैक्स) या स्पष्ट JOIN का उपयोग करें। यह कार्टेशियन प्रोडक्ट (सभी संयोजन) या मिलान वाले संयोजन बना सकता है।
उदाहरण: Name और Age टेबल से Student टेबल में कार्टेशियन प्रोडक्ट
टेबल 1: Names
mysql> CREATE TABLE DemoTable1943 (Name VARCHAR(20));
mysql> INSERT INTO DemoTable1943 VALUES ('Chris'), ('Robert');
टेबल 2: Ages
mysql> CREATE TABLE DemoTable1944 (Age INT); mysql> INSERT INTO DemoTable1944 VALUES (23), (26);
लक्ष्य टेबल 3:
mysql> CREATE TABLE DemoTable1945 (
StudentName VARCHAR(20),
StudentAge INT
);
क्रॉस जॉइन (कॉमा सिंटैक्स) के साथ इन्सर्ट:
mysql> INSERT INTO DemoTable1945 (StudentName, StudentAge) SELECT tbl1.Name, tbl2.Age FROM DemoTable1943 tbl1, DemoTable1944 tbl2;
परिणाम (2 × 2 = 4 पंक्तियाँ - सभी संयोजन):
+-------------+------------+ | StudentName | StudentAge | +-------------+------------+ | Chris | 23 | | Robert | 23 | | Chris | 26 | | Robert | 26 | +-------------+------------+
स्पष्ट JOIN सिंटैक्स (अनुशंसित)
-- CROSS JOIN (स्पष्ट) INSERT INTO DemoTable1945 (StudentName, StudentAge) SELECT t1.Name, t2.Age FROM DemoTable1943 t1 CROSS JOIN DemoTable1944 t2; -- INNER JOIN (मिलान शर्त के साथ) INSERT INTO target (name, age) SELECT u.name, p.age FROM users u INNER JOIN profiles p ON u.id = p.user_id;
कॉलम मैपिंग महत्वपूर्ण है
INSERT INTOकॉलम सूची औरSELECTकॉलम क्रम/संख्या मेल खाना चाहिए- उपनाम (tbl1, tbl2) अस्पष्टता रोकते हैं
- डेटा प्रकार संगत होने चाहिए
WHERE क्लॉज़ के साथ फ़िल्टरिंग
INSERT INTO target (name, age) SELECT u.name, p.age FROM users u JOIN profiles p ON u.id = p.user_id WHERE u.status = 'active' AND p.age >= 18;
उपयोग के मामले
- रिपोर्टिंग/सारांश टेबल बनाना
- डेटा वेयरहाउस ETL (फैक्ट टेबल पॉपुलेट करना)
- टेस्ट डेटा जनरेशन (कार्टेशियन प्रोडक्ट)
- डिनॉर्मलाइज़ेशन
सावधानियां
- कार्टेशियन प्रोडक्ट विस्फोट: बड़ी टेबल्स पर अनजाने में क्रॉस जॉइन लाखों पंक्तियाँ बना सकता है
- डुप्लिकेट: यूनिक कंस्ट्रैइंट टकराव संभव
- प्रदर्शन: बड़े जॉइन के लिए बैच में प्रोसेस करें
- ट्रांजैक्शन: एटॉमिसिटी के लिए रैप करें
एकाधिक स्रोत टेबल्स से इन्सर्ट डेटा इंटीग्रेशन और वेयरहाउसिंग का मुख्य पैटर्न है।