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

MySQL-এ INSERT INTO SELECT ব্যবহার করে অন্য টেবিল থেকে একাধিক রো একসাথে ইনসার্ট করা

INSERT INTO ... SELECT ব্যবহার করে এক টেবিল থেকে ডেটা অন্য টেবিলে কপি করা যায়। এখানে GROUP_CONCAT() ব্যবহার করে একাধিক নাম একসাথে একটি কলামে সংযুক্ত করা হয়েছে।

প্রথম টেবিল তৈরি ও ডেটা

mysql> create table DemoTable1(Name varchar(100));
Query OK, 0 rows affected (0.55 sec)
mysql> insert into DemoTable1 values('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1 values('Robert');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1 values('Adam');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1 values('Bob');
Query OK, 1 row affected (0.20 sec)
mysql> select * from DemoTable1;

আউটপুট:

+--------+
| Name   |
+--------+
| Chris  |
| Robert |
| Adam   |
| Bob    |
+--------+
4 rows in set (0.00 sec)

দ্বিতীয় টেবিল তৈরি

mysql> create table DemoTable2(ListOfEmployee text);
Query OK, 0 rows affected (0.59 sec)

INSERT INTO SELECT দিয়ে কপি করা

mysql> insert into DemoTable2(ListOfEmployee) 
select GROUP_CONCAT(Name) from DemoTable1;
Query OK, 1 row affected (0.20 sec)
Records: 1 Duplicates: 0 Warnings: 0

ফলাফল

mysql> select * from DemoTable2;

আউটপুট:

+-----------------------+
| ListOfEmployee        |
+-----------------------+
| Chris,Robert,Adam,Bob |
+-----------------------+
1 row in set (0.00 sec)

দ্রষ্টব্য

  • GROUP_CONCAT ডিফল্টভাবে কমা (,) দিয়ে যোড় করে; SEPARATOR দিয়ে পরিবর্তন করা যায়।
  • ম্যাক্সিমাম দৈর্ঘ্য group_concat_max_len সিস্টেম ভেরিয়েবল দ্বারা নিয়ন্ত্রিত (ডিফল্ট ১০২৪ বাইট)।
  • সাধারণত নরমালাইজড ডিজাইন সুপারিশ করা হয়; ডিনরমালাইজেশন নির্দিষ্ট কেসে।
  1. MySQL-এ INSERT INTO SELECT ব্যবহার করে এক টেবিল থেকে অন্য টেবিলে রো কপি করা

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

  3. MySQL-এ INSERT INTO SELECT ব্যবহার করে অন্য টেবিল থেকে ডেটা কপি করা

  4. MySQL-এ একটি টেবিল থেকে অন্য টেবিলে ডেটা ইনসার্ট করা