MySQL-এ CREATE TABLE ... AS SELECT ... UNION ... ব্যবহার করে দুটি টেবিলের ডেটা মার্জ করে নতুন টেবিল তৈরি করা যায়।
টেবিল ১
mysql> CREATE TABLE DemoTable1 (FirstName VARCHAR(1000));
INSERT INTO DemoTable1 VALUES ('John');
টেবিল ২
mysql> CREATE TABLE DemoTable2 (FirstName VARCHAR(100));
INSERT INTO DemoTable2 VALUES ('Chris');
মার্জ করে নতুন টেবিল তৈরি (সোর্স টেবিল ট্র্যাকিং সহ)
mysql> CREATE TABLE DemoTable3 AS
(SELECT FirstName, 'DemoTable1' AS `TABLE_NAME` FROM DemoTable1)
UNION
(SELECT FirstName, 'DemoTable2' AS `TABLE_NAME` FROM DemoTable2);
Query OK, 2 rows affected (1.08 sec)
ফলাফল
mysql> SELECT * FROM DemoTable3;
+-----------+--------------+ | FirstName | TABLE_NAME | +-----------+--------------+ | John | DemoTable1 | | Chris | DemoTable2 | +-----------+--------------+
নোটস
CREATE TABLE ... AS SELECT→ নতুন টেবিলে ইনডেক্স, কনস্ট্রেইন্ট, AUTO_INCREMENT হয় না (শুধু কলাম+ডেটা)UNION→ ডুপ্লিকেট রো সরিয়ে দেয়;UNION ALL→ সব রো রাখে (দ্রুত)- কলাম নাম/টাইপ প্রথম
SELECT- থেকে নেওয়া হয় - বড় ডেটাসেটের জন্য
INSERT INTO new_tbl SELECT ... UNION ALL SELECT ...ভালো (টেবিল আগে তৈরি করে)