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

MySQL में एकाधिक टेबल्स से रिकॉर्ड इन्सर्ट कैसे करें?

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 (फैक्ट टेबल पॉपुलेट करना)
  • टेस्ट डेटा जनरेशन (कार्टेशियन प्रोडक्ट)
  • डिनॉर्मलाइज़ेशन

सावधानियां

  • कार्टेशियन प्रोडक्ट विस्फोट: बड़ी टेबल्स पर अनजाने में क्रॉस जॉइन लाखों पंक्तियाँ बना सकता है
  • डुप्लिकेट: यूनिक कंस्ट्रैइंट टकराव संभव
  • प्रदर्शन: बड़े जॉइन के लिए बैच में प्रोसेस करें
  • ट्रांजैक्शन: एटॉमिसिटी के लिए रैप करें

एकाधिक स्रोत टेबल्स से इन्सर्ट डेटा इंटीग्रेशन और वेयरहाउसिंग का मुख्य पैटर्न है।

  1. - MySQL में एकाधिक टेक्स्ट रिकॉर्ड को एक में कैसे संयोजित करें?

    MySQL में GROUP_CONCAT() फ़ंक्शन का उपयोग करके एकाधिक पंक्तियों के टेक्स्ट मानों को एक स्ट्रिंग में जोड़ा जा सकता है। कस्टम विभाजक भी निर्दिष्ट किया जा सकता है। सिंटैक्स GROUP_CONCAT(column_name [SEPARATOR separator_string]) उदाहरण तालिका बनाएं और शब्द डालें: mysql> CREATE TABLE DemoTable (Valu

  1. - MySQL में एक ही क्वेरी में एकाधिक रिकॉर्ड कैसे अपडेट करें?

    MySQL में UPDATE स्टेटमेंट में WHERE क्लॉज का उपयोग करके एक ही क्वेरी में एकाधिक कॉलम अपडेट किए जा सकते हैं, लेकिन एकाधिक पंक्तियों को अलग-अलग मानों से अपडेट करने के लिए CASE या एकाधिक क्वेरी की आवश्यकता होती है। उदाहरण: एक पंक्ति, एकाधिक कॉलम तालिका बनाएं: mysql> CREATE TABLE DemoTable ( -&

  1. - MySQL में एकल INSERT से एकाधिक रिकॉर्ड तेजी से डालें

    बल्क इंसर्ट सिंटैक्स से प्रदर्शन सुधारें एक ही INSERT स्टेटमेंट में कई मान सेट अल्पविराम से अलग करके डालें। सिंटैक्स: insert into yourTableName values(val1,val2,...),(val1,val2,...),...; उदाहरण: mysql> create table DemoTable2007 ( Amount1 int, Amount2 int, Amount3 int ); Query OK, 0 rows affected