কম্পিউটার টিউটোরিয়াল

MySQL-এ INSERT INTO SELECT এবং UNION দিয়ে একাধিক রো ইনসার্ট করা

একক কোয়েরিতে একাধিক সারি ইনসার্ট করতে 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

বিষয়UNIONUNION 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');

এটি আরও পঠনীয় এবং দ্রুত।

  1. MySQL에서 GROUP BY로 그룹핑하며 합계 구하기

  2. MySQL에서 한 테이블의 데이터를 다른 테이블로 복사하기 (INSERT INTO SELECT)

  3. MySQL-এ AUTO_INCREMENT টেবিলে INSERT INTO SELECT ব্যবহার করা

  4. MySQL-এ LPAD() এবং COALESCE() দিয়ে প্রিসিডিং জিরো সহ আইডি জেনারেট করা