MySQL का INSERT INTO ... SELECT स्टेटमेंट एक क्वेरी में एक टेबल से डेटा चुनकर दूसरी टेबल में डालता है।
सिंटैक्स
INSERT INTO लक्ष्य_टेबल (कॉलम1, कॉलम2, ...) SELECT कॉलम1, कॉलम2, ... FROM स्रोत_टेबल WHERE शर्त;
उदाहरण: NULL रहित रिकॉर्ड कॉपी करना
1. स्रोत टेबल बनाएं
mysql> CREATE TABLE DemoTable1 (
-> Id INT,
-> FirstName VARCHAR(20)
-> );
2. डेटा डालें (कुछ NULL के साथ)
mysql> INSERT INTO DemoTable1 VALUES(101, 'Chris'); mysql> INSERT INTO DemoTable1 VALUES(NULL, 'Bob'); mysql> INSERT INTO DemoTable1 VALUES(NULL, NULL); mysql> INSERT INTO DemoTable1 VALUES(102, 'David');
3. लक्ष्य टेबल बनाएं
mysql> CREATE TABLE DemoTable2 (
-> StudentId INT,
-> StudentName VARCHAR(20)
-> );
4. शर्त के साथ कॉपी करें
mysql> INSERT INTO DemoTable2
-> SELECT Id, FirstName FROM DemoTable1
-> WHERE Id IS NOT NULL AND FirstName IS NOT NULL;
Query OK, 2 rows affected
5. परिणाम देखें
mysql> SELECT * FROM DemoTable2;
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 101 | Chris | | 102 | David | +-----------+-------------+
मुख्य बिंदु
- कॉलम क्रम और प्रकार संगत होने चाहिए
- WHERE क्लॉज से फ़िल्टर कर सकते हैं
UNION ALLसे एकाधिक SELECT संयोजित कर सकते हैं- आइडेंटिटी कॉलम (AUTO_INCREMENT) में स्पष्ट मान न दें
उन्नत उपयोग
-- परिवर्तन के साथ कॉपी INSERT INTO target (name, upper_name) SELECT name, UPPER(name) FROM source; -- एकाधिक स्रोत से INSERT INTO target (name) SELECT name FROM source1 UNION ALL SELECT name FROM source2;