สร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable1987 ( UserValue int );
mysql> insert into DemoTable1987 values(4);
mysql> insert into DemoTable1987 values(5);
mysql> insert into DemoTable1987 values(6);
mysql> insert into DemoTable1987 values(7);
ข้อมูลในตาราง
+-----------+
| UserValue |
+-----------+
| 4 |
| 5 |
| 6 |
| 7 |
+-----------+
Query สร้างคอลัมน์ NewValue 2 รูปแบบ (x100 และ x50)
mysql> select UserValue, (UserValue*100) as NewValue from DemoTable1987
union all
select UserValue, (UserValue*50) as NewValue from DemoTable1987
order by UserValue;
ผลลัพธ์
+-----------+----------+
| UserValue | NewValue |
+-----------+----------+
| 4 | 400 |
| 4 | 200 |
| 5 | 500 |
| 5 | 250 |
| 6 | 600 |
| 6 | 300 |
| 7 | 700 |
| 7 | 350 |
+-----------+----------+
อธิบาย
UNION ALL รวมผลลัพธ์ของ 2 Query เข้าด้วยกัน (ไม่ลบซ้ำ)
- Query แรก: คูณ 100, Query ที่สอง: คูณ 50
ORDER BY UserValue เรียงผลลัพธ์รวมตามค่า UserValue
กรณีใช้งานจริง
- สร้างข้อมูลทดสอบ (Test Data Generation)
- คำนวณสถานการณ์ต่างๆ (Scenario Analysis) เช่น ราคาขาย, ราคาทุน, ราคาพิเศษ
- Pivot/Unpivot ข้อมูลแบบ Manual
วิธีทันสมัยกว่า (MySQL 8.0+ CTE)
WITH base AS (SELECT UserValue FROM DemoTable1987)
SELECT UserValue, UserValue * 100 AS NewValue, 'x100' AS Type FROM base
UNION ALL
SELECT UserValue, UserValue * 50 AS NewValue, 'x50' AS Type FROM base
ORDER BY UserValue, Type;
เพิ่มคอลัมน์ระบุประเภทการคำนวณ
SELECT UserValue, (UserValue*100) AS NewValue, 'Multiply_100' AS CalcType FROM DemoTable1987
UNION ALL
SELECT UserValue, (UserValue*50) AS NewValue, 'Multiply_50' AS CalcType FROM DemoTable1987
ORDER BY UserValue, CalcType;