ตัวดำเนินการ UNION ใช้เพื่อรวมชุดผลลัพธ์ 2 ชุดจากคำสั่ง SELECT 2 รายการขึ้นไป มันจะลบแถวเดียวกันในคำสั่ง SELECT เหล่านี้
แต่ละ SELECT ในโอเปอเรเตอร์ UNION จะต้องมีจำนวนคอลัมน์เท่ากันในชุดผลลัพธ์ที่มีประเภทข้อมูลที่สอดคล้องกัน
ไวยากรณ์ตัวดำเนินการ UNION
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien]
UNION
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE
dieu_kien];
ชื่อตัวแปรหรือค่าตัวแปร
bieu_thuc1, bieu_thuc2, . bieu_thucn
คอลัมน์หรือค่าการคำนวณที่คุณต้องการดึงข้อมูล
ระบุ
Table ต้องการรับระเบียน ต้องมีอย่างน้อย 1 ตารางในส่วนคำสั่ง FROM
WHERE dieu_kien
ตัวเลือก ต้องเป็นไปตามเงื่อนไขสำหรับบันทึกที่เลือก
หมายเหตุ:
- คำสั่ง SELECT 2 รายการต้องมีจำนวนนิพจน์เท่ากัน
- จำนวนคอลัมน์ที่สอดคล้องกันในแต่ละคำสั่ง SELECT ต้องมีประเภทข้อมูลเหมือนกัน
- ตัวดำเนินการ UNION ล้างแถวที่ซ้ำกัน
ดูตัวดำเนินการ UNION ALL เพิ่มเติม
ตัวอย่างเช่น - ส่งคืนฟิลด์ข้อมูล
ตัวอย่างเช่น ตัวดำเนินการ UNION ส่งคืนฟิลด์จากคำสั่ง SELECT หลายรายการ (และฟิลด์ที่มีประเภทข้อมูลเดียวกัน)
SELECT sanpham_id
FROM sanpham
UNION
SELECT sanpham_id
FROM hangtonkho;
ในตัวอย่างข้างต้น ถ้า sanpham_id ใดๆ ปรากฏในทั้งตาราง sanpham และ hangtonkho จะมีเพียง 1 sanpham_id เท่านั้นที่จะปรากฏในชุดผลลัพธ์ หากคุณไม่ต้องการลบระเบียนที่ซ้ำกัน ให้ใช้ตัวดำเนินการ UNION ALL
ตัวอย่างเช่น - ใช้ ORDER BY
ตัวดำเนินการ UNION สามารถใช้คำสั่ง 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 B
Y 2;
ในตัวอย่างนี้ เนื่องจากชื่อคอลัมน์ในคำสั่ง SELECT สองคำสั่งต่างกัน จึงง่ายต่อการอ้างอิงคอลัมน์ในคำสั่ง ORDER BY ตามตำแหน่งในชุดผลลัพธ์ ในตัวอย่างข้างต้น เรากรองผลลัพธ์ตาม namba_ten / congty_ten ตามลำดับจากน้อยไปมาก ตามที่ระบุโดยวลี ORDER BY 2
danhba_ten / congty_ten อยู่ในตำแหน่งที่สองในชุดผลลัพธ์