คำสั่ง UNION ใน MySQL เป็นคำสั่งที่ใช้สำหรับการรวมข้อมูลในตารางฐานข้อมูล ที่มีความคล้ายกัน ตั้งแต่ 2 ตารางขึ้นไป โดยผลลัพธ์ที่ได้ จะอ้างอิงตามชื่อ Field หรือ Column ของ Table หลัก หรืออยู่ภายใต้ข้อมูลของตารางที่ SELECT ไม่ใช่ตารางที่ทำการ UNION
ตัวอย่างและวิธีใช้งาน คำสั่ง UNION ใน MySQL
- เพื่อให้เห็นภาพชัดเจนและเข้าใจง่ายขึ้น ให้ทดลองสร้างตารางฐานข้อมูลมา 2 ตาราง คือ ตาราง companies และ ตาราง suppliers และเพิ่มข้อมูลเข้าไปในทั้ง 2 ตาราง โดยใช้คำสั่งดังนี้ครับ
สร้าง Table สำหรับทดสอบ
CREATE TABLE `companies` (
`company_id` int(11) NOT NULL,
`company_name` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `companies` (`company_id`, `company_name`) VALUES
(1, 'company 1'),
(2, 'company 2'),
(3, 'company 3');
CREATE TABLE `suppliers` (
`supplier_id` int(11) NOT NULL,
`supplier_name` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `suppliers` (`supplier_id`, `supplier_name`) VALUES
(1, 'supplier 1'),
(2, 'supplier 2'),
(3, 'supplier 3');
- หลังจากที่เราได้สร้างตารางฐานข้อมูลทั้ง 2 เรียบร้อยแล้ว เราจะทดสอบการรวมข้อมูลของทั้ง 2 ตาราง โดยให้ตาราง companies เป็นตารางหลัก และทำการรวมข้อมูล ( UNION ) จากตาราง suppliers ซึ่งสามารถเขียนคำสั่งได้ดังนี้
ทดสอบ Query ข้อมูล
SELECT * /* ใช้การ select แบบ * ตารางที่ union เข้ามาต้องมีจำนวนฟิลด์เท่ากันกับตารางหลัก */
FROM suppliers
UNION
SELECT *
FROM companies
ผลลัพธ์ที่ได้ของคำสั่งด้านบน จะสังเกตุเห็นว่า ข้อมูลของตารางที่ถูก UNION จะมารวบอยู่ในตารางหลัก ภายในชื่อ column name ของตารางหลัก คือ รวม suppliers_id มาไว้ใน company_id และ รวม suppliers_name มาไว้ใน company_name

- ข้อควรรู้สำหรับคำสั่ง UNION คือ ทุกตารางที่ UNION กับตารางหลักจะต้องมีจำนวน Fields ที่เท่ากันกับตารางหลัก คำสั่ง SELECT * จะไม่สามารถใช้งานได้ทันที กรณีที่ตารางใด ตารางหนึ่ง มี Fields มากกว่า ตารางหลัก เราสามารถแก้ปัญหานี้ได้ ด้วยการกำหนด SELECT Fields1,Fields2 ให้กับแต่ละตาราง ตามตัวอย่างด้านล่างครับ
SELECT company_id, company_name /* จำนวนฟิลด์ของตารางหลักคือ 2 */
FROM companies
UNION
SELECT supplier_id, supplier_name /* จำนวนฟิลด์ของตาราง UNION ก็ต้องมี 2 ฟิลด์ด้วย */
FROM suppliers
สรุป คำสั่ง UNION เหมาะใช้สำหรับการรวมผลข้อมูลจากตารางที่มีความคล้ายคลึงกับตารางหลัก ตัวอย่างเช่น ตารางหลัก คือ companies ต้องการนำข้อมูลจากตาราง supplier และตาราง investor ซึ่งมีการเก็บข้อมูลในลักษณะเดียวกัน รวบเป็นข้อมูลชุดเดียวกัน เพื่อนำไปจัดเรียง และ แสดงผลในหน้าเดียวกัน ลักษณะเดียวกัน