MySQL-এ এক টেবিল থেকে ডেটা সিলেক্ট করে অন্য টেবিলে ইনসার্ট করতে INSERT INTO ... SELECT সিনট্যাক্স ব্যবহার করা হয়। কলাম তালিকা মিলিয়ে দেওয়া জরুরি।
সোর্স টেবিল তৈরি এবং ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable1 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FirstName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.57 sec)
mysql> INSERT INTO DemoTable1(FirstName) VALUES('John');
mysql> INSERT INTO DemoTable1(FirstName) VALUES('Chris');
সোর্স টেবিলের ডেটা
mysql> SELECT * FROM DemoTable1;
+----+-----------+ | Id | FirstName | +----+-----------+ | 1 | John | | 2 | Chris | +----+-----------+ 2 rows in set (0.00 sec)
ডেস্টিনেশন টেবিল তৈরি
mysql> CREATE TABLE DemoTable2 (
-> CustomerId INT,
-> CustomerName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.43 sec)
INSERT INTO ... SELECT ব্যবহার করে ডেটা কপি
mysql> INSERT INTO DemoTable2(CustomerId, CustomerName)
-> SELECT Id, FirstName FROM DemoTable1;
Query OK, 2 rows affected (0.17 sec)
Records: 2 Duplicates: 0 Warnings: 0
ডেস্টিনেশন টেবিল যাচাই
mysql> SELECT * FROM DemoTable2;
আউটপুট
+------------+--------------+ | CustomerId | CustomerName | +------------+--------------+ | 1 | John | | 2 | Chris | +------------+--------------+ 2 rows in set (0.00 sec)
সঠিক সিনট্যাক্স:
INSERT INTO target_table (col1, col2, ...) SELECT col1, col2, ... FROM source_table WHERE condition;
ERROR 1064 এর সাধারণ কারণ:
- কলাম সংখ্যা বা টাইপ মিল না খাওয়া।
VALUESকীওয়ার্ড ভুলে যাওয়া (SELECT-এ VALUES লাগে না)।- ব্যাকটিক ছাড়া রিজার্ভড কীওয়ার্ড কলাম নাম হিসেবে ব্যবহার।
- সাবকোয়েরিতে পারেনথেসিস ভুল ব্যবহার।
টিপস: বড় ডেটাসেটের জন্য INSERT IGNORE INTO ... SELECT বা ON DUPLICATE KEY UPDATE ব্যবহার করুন।