INSERT INTO ... SELECT स्टेटमेंट का उपयोग करके एक टेबल से दूसरी टेबल में पंक्तियाँ कॉपी करें (शर्त के साथ)।
स्रोत टेबल
mysql> CREATE TABLE DemoTable1879 (Id INT, Name VARCHAR(20)); mysql> INSERT INTO DemoTable1879 VALUES(101, 'Chris Brown'), (102, 'David Miller'), (103, 'Adam Smith');
लक्ष्य टेबल
mysql> CREATE TABLE DemoTable1880 (ClientId INT, ClientName VARCHAR(20));
चुनिंदा पंक्तियाँ कॉपी करें
mysql> INSERT INTO DemoTable1880(ClientId, ClientName)
SELECT Id, Name FROM DemoTable1879 WHERE Id IN (101, 103);
परिणाम
+----------+-------------+ | ClientId | ClientName | +----------+-------------+ | 101 | Chris Brown | | 103 | Adam Smith | +----------+-------------+
सिंटैक्स विविधताएं
| पैटर्न | उदाहरण |
|---|---|
| सभी कॉलम, सभी पंक्तियाँ | INSERT INTO target SELECT * FROM source |
| निर्दिष्ट कॉलम | INSERT INTO target(c1,c2) SELECT c1,c2 FROM source |
| कॉलम मैपिंग | INSERT INTO target(a,b) SELECT x,y FROM source |
| स्थिर मान + कॉलम | INSERT INTO target(a,b,c) SELECT x,y,'fixed' FROM source |
| अभिव्यक्ति | INSERT INTO target(a,b) SELECT x, UPPER(y) FROM source |
महत्वपूर्ण नोट्स
- कॉलम संख्या और क्रम मेल खाना चाहिए (नाम नहीं, स्थिति)।
- डेटा प्रकार संगत होने चाहिए।
AUTO_INCREMENTकॉलम मेंNULLया 0 डालें या कॉलम सूची से बाहर रखें।- बड़े कॉपी के लिए बैच/चंक में करें।
टेबल बनाते समय कॉपी (CREATE TABLE ... AS SELECT)
CREATE TABLE NewTable AS SELECT * FROM DemoTable1879 WHERE Id IN (101, 103);
यह नई टेबल बनाता है (इंडेक्स, PK, AUTO_INCREMENT कॉपी नहीं होते)।