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

MySQL-এ UNION দিয়ে দুটি টেবিল মার্জ করে নতুন টেবিল তৈরি করা

MySQL-এ দুটি টেবিলের ডেটা UNION (ডুপ্লিকেট রিমুভ) বা UNION ALL (সব সারি) দিয়ে মার্জ করে নতুন টেবিল তৈরি করতে CREATE TABLE ... AS SELECT ... UNION ... প্যাটার্ন ব্যবহার করুন।

সিনট্যাক্স

CREATE TABLE new_table AS
SELECT * FROM table_a
UNION
SELECT * FROM table_b;

উদাহরণ

টেবিল A

CREATE TABLE first_table (id INT, person_name VARCHAR(20));
INSERT INTO first_table VALUES (10, 'Larry'), (20, 'David');

টেবিল B

CREATE TABLE second_table (id INT, person_name VARCHAR(20));
INSERT INTO second_table VALUES (30, 'Chris'), (40, 'Robert');

UNION দিয়ে মার্জ (ডুপ্লিকেট হলে একটিই থাকবে)

CREATE TABLE merge_both_demo AS
SELECT * FROM first_table
UNION
SELECT * FROM second_table;

ফলাফল

+------+------------+
| id   | person_name|
+------+------------+
| 10   | Larry      |
| 20   | David      |
| 30   | Chris      |
| 40   | Robert     |
+------+------------+

UNION ALL (ডুপ্লিকেট রাখতে চাইলে)

CREATE TABLE merge_all_demo AS
SELECT * FROM first_table
UNION ALL
SELECT * FROM second_table;

কলাম ম্যাচিং নিয়ম

  • দুই ক্যোয়ারির কলাম সংখ্যা একই হতে হবে
  • কলামের ডেটা টাইপ কম্প্যাটিবল হতে হবে (পজিশন অনুযায়ী)
  • কলাম নাম প্রথম SELECT-র হয় ব্যবহার

কলাম নাম/অর্ডার ভিন্ন হলে

CREATE TABLE merge_custom AS
SELECT id, person_name AS name FROM first_table
UNION ALL
SELECT person_id, full_name FROM second_table;  -- কলাম নাম ভিন্ন, পজিশন মিলিয়ে

WHERE ক্লজ সহ ফিল্টার করে মার্জ

CREATE TABLE filtered_merge AS
SELECT * FROM table_a WHERE status = 'active'
UNION ALL
SELECT * FROM table_b WHERE status = 'active';

সতর্কতা

  • CREATE TABLE ... AS SELECT ইনডেক্স, PRIMARY KEY, AUTO_INCREMENT, FOREIGN KEY কপি করে না
  • নতুন টেবিলে কনস্ট্রেইন্ট আলাদা যোগ করতে হয়
  • বড় টেবিলের জন্য পার্টিশন বা ব্যাচ প্রসেসিং বিবেচনা করুন

ইনডেক্স যোগ করা (পরবর্তীতে)

ALTER TABLE merge_both_demo ADD PRIMARY KEY (id);
ALTER TABLE merge_both_demo ADD INDEX idx_name (person_name);
  1. Java MySQL ব্যবহার করে MySQL টেবিল আপডেট করা

  2. MySQL-এ UNION ALL ব্যবহার করে একক কোয়েরিতে দুটি টেবিলে রেকর্ড ইনসার্ট করা

  3. MySQL-এ একক SELECT কোয়েরিতে দুটি টেবিল থেকে ডেটা ফেচ করা

  4. MySQL-এ UNION ALL এবং INSERT INTO SELECT ব্যবহার করে একক কোয়েরিতে দুটি টেবিলে ডেটা ইনসার্ট করুন