একক কোয়েরিতে একাধিক সারি ইনসার্ট করতে INSERT INTO SELECT ... UNION ALL প্যাটার্ন ব্যবহার করা হয়। এটি আলাদা আলাদা `INSERT` চালানোর চেয়ে দ্রুত এবং অ্যাটমিক।
সিনট্যাক্স
INSERT INTO yourTableName (col1, col2, col3) SELECT val1, val2, val3 UNION ALL SELECT val4, val5, val6 ...;
টেবিল তৈরি
mysql> CREATE TABLE DemoTable1936 (
StudentId INT,
StudentName VARCHAR(20),
StudentCountryName VARCHAR(20)
);
UNION ALL দিয়ে একাধিক রো ইনসার্ট
mysql> INSERT INTO DemoTable1936 (StudentId, StudentName, StudentCountryName)
SELECT 1001 AS StudentId, 'Chris' AS StudentName, 'US' AS StudentCountryName
UNION ALL
SELECT 1002, 'Robert', 'UK'
UNION ALL
SELECT 1003, 'David', 'AUS';
আউটপুট: Query OK, 3 rows affected (0.00 sec)
ফলাফল যাচাই
mysql> SELECT * FROM DemoTable1936;
+-----------+-------------+--------------------+ | StudentId | StudentName | StudentCountryName | +-----------+-------------+--------------------+ | 1001 | Chris | US | | 1002 | Robert | UK | | 1003 | David | AUS | +-----------+-------------+--------------------+
UNION vs UNION ALL
| বিষয় | UNION | UNION ALL |
|---|---|---|
| ডুপ্লিকেট মুছে ফেলে | হ্যাঁ | না |
| পারফরম্যান্স | ধীর (সোর্ট/ইউনিক চেক) | দ্রুত |
| ব্যবহার | যখন ডুপ্লিকেট না চাই | যখন সব রো দরকার |
সুপারিশ: ইনসার্টের সময় ডুপ্লিকেট না থাকা নিশ্চিত থাকলে সবসময় `UNION ALL` ব্যবহার করুন।
বিকল্প: VALUES ROW কনস্ট্রাক্টর (MySQL 8.0.19+)
INSERT INTO DemoTable1936 (StudentId, StudentName, StudentCountryName) VALUES ROW (1001, 'Chris', 'US'), ROW (1002, 'Robert', 'UK'), ROW (1003, 'David', 'AUS');
এটি আরও পঠনীয় এবং দ্রুত।