UNPIVOT แบบง่าย: คอลัมน์หลายตัว → แถวเดียว (Rows)
ใช้ UNION ALL รวมผลลัพธ์ของ SELECT แต่ละคอลัมน์ เข้าด้วยกัน กลายเป็นคอลัมน์เดียวหลายแถว
สร้างตารางและข้อมูล (2 คอลัมน์, 2 แถว)
mysql> CREATE TABLE DemoTable (Value1 INT, Value2 INT); Query OK, 0 rows affected (0.88 sec) mysql> INSERT INTO DemoTable VALUES(100, 200), (500, 600); Query OK, 2 rows affected
ข้อมูลต้นฉบับ (Wide Format)
+--------+--------+ | Value1 | Value2 | +--------+--------+ | 100 | 200 | | 500 | 600 | +--------+--------+
คำสั่ง: UNION ALL รวม Value1 และ Value2
mysql> SELECT Value1 FROM DemoTable
-> UNION ALL
-> SELECT Value2 FROM DemoTable;
ผลลัพธ์ (Long Format: 4 แถว 1 คอลัมน์)
+--------+ | Value1 | +--------+ | 100 | | 500 | | 200 | | 600 | +--------+
คำอธิบาย
SELECT Value1 FROM DemoTable→ 100, 500SELECT Value2 FROM DemoTable→ 200, 600UNION ALL→ รวมต่อกัน (ไม่ DISTINCT, ไม่ Sort) → 100, 500, 200, 600
UNION vs UNION ALL
| Operator | Duplicate | Sort | Performance |
|---|---|---|---|
| UNION | ลบซ้ำ (DISTINCT) | มี Implicit Sort | ช้ากว่า |
| UNION ALL | เก็บทุกแถว | ไม่ Sort | เร็วกว่า (แนะนำ) |