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