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