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

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

ตัวดำเนินการ UNION ใช้เพื่อรวมชุดผลลัพธ์ 2 ชุดจากคำสั่ง SELECT 2 รายการขึ้นไป มันจะลบแถวเดียวกันในคำสั่ง SELECT เหล่านี้

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

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

  SE LECT 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

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

หมายเหตุ:

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

  4. ดูตัวดำเนินการ UNION ALL เพิ่มเติม

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

ตัวอย่างเช่น ตัวดำเนินการ UNION ส่งคืนฟิลด์จากคำสั่ง SELECT หลายรายการ (และฟิลด์ที่มีประเภทข้อมูลเดียวกัน)

  SELECT san pham_id 
FROM sanpham
UNION
SELECT sanpham_id
FROM hangtonkho;

ในตัวอย่างข้างต้น ถ้า sanpham_id ใดๆ ปรากฏในทั้งตาราง sanpham และ hangtonkho จะมีเพียง 1 sanpham_id เท่านั้นที่จะปรากฏในชุดผลลัพธ์ หากคุณไม่ต้องการลบระเบียนที่ซ้ำกัน ให้ใช้ตัวดำเนินการ UNION ALL

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

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

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