บทนำ
เมื่อต้องการสร้างชุดข้อมูล (Result Set) จากรายการค่าที่กำหนดเองโดยไม่ต้องสร้างตารางจริง สามารถใช้ UNION ALL รวมหลายคำสั่ง SELECT เข้าด้วยกัน
ตัวอย่างที่ 1: สร้างตารางจากค่า 10, 20, 30, 40, 50
mysql> SELECT 10 AS Number
-> UNION ALL SELECT 20
-> UNION ALL SELECT 30
-> UNION ALL SELECT 40
-> UNION ALL SELECT 50;
ผลลัพธ์
+--------+
| Number |
+--------+
| 10 |
| 20 |
| 30 |
| 40 |
| 50 |
+--------+
5 rows in set (0.00 sec)
ตัวอย่างที่ 2: สร้างตารางจากค่า 1, 2, 3
mysql> SELECT 1 AS a UNION ALL SELECT 2 UNION ALL SELECT 3;
ผลลัพธ์
+---+
| a |
+---+
| 1 |
| 2 |
| 3 |
+---+
3 rows in set (0.00 sec)
ข้อสังเกต
- ใช้
UNION ALLแทนUNIONเพื่อเก็บค่าซ้ำได้ (เร็วกว่าเพราะไม่ต้องตรวจสอบค่าซ้ำ) - คอลัมน์แรกจะกำหนดชื่อและชนิดข้อมูลของคอลัมน์ผลลัพธ์
- เหมาะสำหรับสร้างข้อมูลทดสอบ (Test Data) หรือตารางค่าคงที่ (Lookup Table) ชั่วคราว