MySQL-এ সাবকোয়ারি ব্যবহার করে এক টেবিল থেকে মান বের করে অন্য টেবিলে ইনসার্ট করা
MySQL-এ INSERT INTO ... SELECT সিনট্যাক্স ব্যবহার করে এক টেবিল থেকে ডেটা বের করে সরাসরি অন্য টেবিলে ইনসার্ট করা যায়। সাবকোয়ারি ব্যবহার করে এগ্রিগেট মান (যেমন MAX)ও ব্যবহার করা যায়।
উদাহরণ
প্রথম টেবিল:
CREATE TABLE DemoTable1 (Id INT, Name VARCHAR(100));
INSERT INTO DemoTable1 VALUES (1001, 'Chris'), (999, 'Robert'), (1003, 'Mike'), (1002, 'Sam');
দ্বিতীয় টেবিল:
CREATE TABLE DemoTable2 (StudentId INT, StudentFirstName VARCHAR(100));
সর্বোচ্চ ID বের করে সব রোয়ে ইনসার্ট
INSERT INTO DemoTable2 (StudentId, StudentFirstName)
SELECT (SELECT MAX(Id) FROM DemoTable1), Name FROM DemoTable1;
ফলাফল যাচাই
SELECT * FROM DemoTable2;
আউটপুট:
+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 1003 | Chris |
| 1003 | Robert |
| 1003 | Mike |
| 1003 | Sam |
+-----------+------------------+
ব্যাখ্যা
(SELECT MAX(Id) FROM DemoTable1)— একটি স্কেলার সাবকোয়ারি যা একক মান (1003) রিটার্ন করে।- এই মানটি
DemoTable1-এর প্রতিটি রোয়ের জন্যStudentIdহিসেবে ইনসার্ট হয়। Nameকলামটি প্রতিটি রোয়ের জন্য আলাদা আলাদা মান দেয়।
সতর্কতা: সাবকোয়ারি একক মান রিটার্ন করতে হবে (স্কেলার), অন্যথায় ত্রুটি হবে।