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

MySQL में एक टेबल से डेटा कॉपी करके दूसरी टेबल में INSERT करने का स्टेटमेंट

MySQL में INSERT INTO ... SELECT: एक टेबल से दूसरी टेबल में डेटा कॉपी करना

एक टेबल से डेटा चुनकर सीधे दूसरी टेबल में डालने के लिए INSERT INTO ... SELECT स्टेटमेंट का उपयोग करें। यह डेटा माइग्रेशन, बैकअप, और ETL कार्यों के लिए कुशल है।

वाक्यविन्यास

INSERT INTO target_table (column1, column2, ...)
SELECT column1, column2, ...
FROM source_table
WHERE condition;

उदाहरण के साथ पूर्ण कार्यान्वयन

स्रोत टेबल बनाना

mysql> CREATE TABLE DemoTable1 (Marks INT);

रिकॉर्ड डालना

mysql> INSERT INTO DemoTable1 VALUES(68), (89), (99), (39), (49);

स्रोत टेबल देखना

mysql> SELECT * FROM DemoTable1;

आउटपुट:

+-------+
| Marks |
+-------+
| 68    |
| 89    |
| 99    |
| 39    |
| 49    |
+-------+
5 rows in set (0.00 sec)

लक्ष्य टेबल बनाना

mysql> CREATE TABLE DemoTable2 (Score INT);

डेटा कॉपी करना

mysql> INSERT INTO DemoTable2(Score) SELECT Marks FROM DemoTable1;

परिणाम: Query OK, 5 rows affected (0.16 sec) Records: 5 Duplicates: 0 Warnings: 0

लक्ष्य टेबल देखना

mysql> SELECT * FROM DemoTable2;

आउटपुट:

+-------+
| Score |
+-------+
| 68    |
| 89    |
| 99    |
| 39    |
| 49    +
+-------+
5 rows in set (0.00 sec)

महत्वपूर्ण बिंदु

  • कॉलम संख्या और क्रम मेल खाना चाहिए (या स्पष्ट रूप से सूचीबद्ध करें)
  • डेटा टाइप संगत होने चाहिए
  • WHERE क्लॉज से फ़िल्टर कर सकते हैं
  • AUTO_INCREMENT कॉलम लक्ष्य में होने पर मान निर्दिष्ट न करें

उन्नत उदाहरण

कॉलम मैपिंग के साथ
INSERT INTO employees_archive (emp_id, full_name, hire_date, dept)
SELECT id, CONCAT(first_name, ' ', last_name), hire_date, department_name
FROM employees
WHERE hire_date < '2020-01-01';
एकाधिक टेबल से (जॉइन के साथ)
INSERT INTO order_summary (order_id, customer_name, total)
SELECT o.id, c.name, SUM(oi.price * oi.quantity)
FROM orders o
JOIN customers c ON o.customer_id = c.id
JOIN order_items oi ON o.id = oi.order_id
GROUP BY o.id, c.name;
डुप्लिकेट संभालना
-- IGNORE: डुप्लिकेट छोड़ें
INSERT IGNORE INTO target SELECT * FROM source;

-- ON DUPLICATE KEY UPDATE: अपडेट करें
INSERT INTO target SELECT * FROM source
ON DUPLICATE KEY UPDATE col1 = VALUES(col1);

प्रदर्शन लाभ

  • एप्लिकेशन लेयर में डेटा लाने की आवश्यकता नहीं
  • सिंगल SQL स्टेटमेंट, ट्रांजैक्शनल
  • बल्क ऑपरेशन के लिए अनुकूलित
  1. - MySQL में UPDATE JOIN से दूसरी टेबल के डेटा से पहली टेबल अपडेट करें

    UPDATE ... JOIN सिंटैक्स UPDATE targetTable tbl1 JOIN sourceTable tbl2 ON tbl1.commonCol = tbl2.commonCol SET tbl1.targetCol = tbl2.sourceCol; उदाहरण स्रोत टेबल (demo54): पूरा डेटा insert into demo54 values(John,Smith), (John,Smith), (David,Smith); लक्ष्य टेबल (demo55): lastName NULL insert int

  1. - MySQL में INSERT INTO SELECT से दूसरी टेबल के मान लेकर नई टेबल भरें

    सिंटैक्स insert into targetTable(col1, col2) select sourceCol1, sourceCol2 from sourceTable where condition; उदाहरण insert into demo83(id,username) select id,name from demo82 where id=101; परिणाम +------+----------+ | id | username | +------+----------+ | 101 | Bob | | 101 | David |

  1. - MySQL में एक टेबल से दूसरी टेबल में डेटा सम्मिलित करना

    परिचय MySQL में INSERT INTO ... SELECT स्टेटमेंट का उपयोग करके एक टेबल से डेटा चुनकर दूसरी टेबल में सम्मिलित किया जा सकता है। पहली टेबल निर्माण और डेटा select * from DemoTable1; +------+-----------+ | Id | FirstName | +------+-----------+ | 101 | Adam | | 102 | John | +------+-------