Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

ตัวดำเนินการ UNION ALL ใน SQL Server

ตัวดำเนินการ UNION ALL ใช้เพื่อรวมชุดผลลัพธ์จากคำสั่ง SELECT 2 คำสั่งขึ้นไปใน SQL Server

ไม่เหมือนกับตัวดำเนินการ UNION ตัวดำเนินการ UNION ALL จะส่งกลับแถวทั้งหมดจากการสืบค้นและไม่ลบแถวที่ซ้ำกัน

แต่ละ SELECT ในโอเปอเรเตอร์ UNION จะต้องมีจำนวนคอลัมน์เท่ากันในชุดผลลัพธ์ที่มีประเภทข้อมูลที่สอดคล้องกัน

ไวยากรณ์ตัวดำเนินการ UNION ALL

  SELECT bieu_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

ตัวเลือก ต้องเป็นไปตามเงื่อนไขสำหรับบันทึกที่เลือก

หมายเหตุ:

  1. คำสั่ง SELECT 2 รายการต้องมีจำนวนนิพจน์เท่ากัน
  2. จำนวนคอลัมน์ที่สอดคล้องกันในแต่ละคำสั่ง SELECT ต้องมีประเภทข้อมูลเหมือนกัน
  3. ตัวดำเนินการ UNION จะไม่ลบแถวที่ซ้ำกัน
  4. ดูโอเปอเรเตอร์ UNION เพิ่มเติม

ตัวอย่างเช่น - ส่งคืนฟิลด์ข้อมูล

  SEL ECT sanpham_id 
FROM sanpham
UNION ALL
SELECT sanpham_id
FROM hangtonkho;

ตัวอย่างนี้ส่งคืน sanpham_id จำนวนมากในชุดผลลัพธ์ หากปรากฏในทั้งตาราง sanpham และ hangtonkho หากคุณต้องการลบรายการที่ซ้ำกัน ให้ใช้องค์ประกอบทั้งหมด UNION

ตัวอย่างเช่น - ใช้ ORDER BY

ตัวดำเนินการ UNION ALL สามารถใช้คำสั่ง ORDER BY เพื่อจัดเรียงผลลัพธ์ของคิวรีได้

  SELECT dan hba_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 อยู่ในตำแหน่งที่สองในชุดผลลัพธ์