INSERT INTO SELECT स्टेटमेंट का उपयोग
MySQL में एक टेबल से दूसरी टेबल में डेटा ले जाने (move) के लिए INSERT INTO ... SELECT स्टेटमेंट का उपयोग करें। यह एक ही क्वेरी में स्रोत टेबल से डेटा पढ़कर लक्ष्य टेबल में डाल देता है।
सिंटैक्स
INSERT INTO yourDestinationTableName
SELECT * FROM yourOriginalTable
WHERE someCondition;
चरण-दर-चरण उदाहरण
1. दो टेबल बनाएं
mysql> CREATE TABLE StudentTable (
-> Id INT,
-> Name VARCHAR(100)
-> );
Query OK, 0 rows affected (0.65 sec)
mysql> CREATE TABLE Employee (
-> EmployeeId INT,
-> EmployeeName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.54 sec)
2. Employee टेबल में डेटा डालें
mysql> INSERT INTO Employee VALUES(1, 'Carol');
mysql> INSERT INTO Employee VALUES(2, 'John');
mysql> INSERT INTO Employee VALUES(3, 'Johnson');
+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
| 1 | Carol |
| 2 | John |
| 3 | Johnson |
+------------+--------------+
3 rows in set (0.00 sec)
3. विशिष्ट पंक्ति ले जाएँ (WHERE क्लॉज के साथ)
mysql> INSERT INTO StudentTable
-> SELECT * FROM Employee
-> WHERE EmployeeId = 3 AND EmployeeName = 'Johnson';
Query OK, 1 row affected (0.17 sec)
mysql> SELECT * FROM StudentTable;
+------+---------+
| Id | Name |
+------+---------+
| 3 | Johnson |
+------+---------+
1 row in set (0.00 sec)
4. सभी पंक्तियाँ ले जाएँ (WHERE क्लॉज के बिना)
mysql> INSERT INTO StudentTable SELECT * FROM Employee;
Query OK, 3 rows affected (0.15 sec)
mysql> SELECT * FROM StudentTable;
+------+---------+
| Id | Name |
+------+---------+
| 1 | Carol |
| 2 | John |
| 3 | Johnson |
+------+---------+
3 rows in set (0.00 sec)
महत्वपूर्ण बिंदु
- दोनों टेबल्स की कॉलम संरचना (संख्या, क्रम, डेटा प्रकार) मेल खानी चाहिए
WHEREक्लॉज वैकल्पिक है - इसे छोड़ने पर सभी पंक्तियाँ कॉपी हो जाती हैं- यह ऑपरेशन कॉपी करता है, मूव नहीं करता। मूल टेबल से डेटा हटाने के लिए अलग से
DELETEचलाना होगा - डुप्लिकेट से बचने के लिए
UNIQUEकंस्ट्रेंट याPRIMARY KEYका उपयोग करें