UNION ALL ใช้ทำอะไร?
UNION ALL รวมผลลัพธ์ของหลาย SELECT เก็บแถวซ้ำไว้ทั้งหมด (ไม่ทำ Distinct) เร็วกว่า UNION
รูปแบบคำสั่ง
SELECT expr1, expr2, ..., expr_n
FROM table1
[WHERE condition]
UNION ALL
SELECT expr1, expr2, ..., expr_n
FROM table2
[WHERE condition];
กฎ (เหมือน UNION)
- จำนวนคอลัมน์เท่ากันทุก SELECT
- ชนิดข้อมูลคอลัมน์ที่ตรงกันเข้ากันได้
ตัวอย่าง
1. รวม 1 คอลัมน์ (เก็บซ้ำ)
SELECT sanpham_id FROM sanpham
UNION ALL
SELECT sanpham_id FROM hangtonkho;
ถ้า sanpham_id อยู่ในทั้งสองตาราง จะปรากฏ 2 ครั้งในผลลัพธ์
2. ใช้ ORDER BY
SELECT danhba_id, danhba_ten
FROM danhba
WHERE ten_trang = 'QuanTriMang.com'
UNION ALL
SELECT congty_id, congty_ten
FROM congty
WHERE ten_trang = 'TrangCuaBan.com'
ORDER BY 2;
UNION vs UNION ALL
| คุณสมบัติ | UNION | UNION ALL |
|---|---|---|
| ลบแถวซ้ำ | ใช่ (Distinct) | ไม่ (เก็บทั้งหมด) |
| ความเร็ว | ช้ากว่า (ต้อง sort/hash) | เร็วกว่า |
| ใช้เมื่อ | ต้องการค่า unique | ต้องการทุกแถว / รู้ว่าไม่ซ้ำ |