ใน SQL Server (Transact-SQL) ตัวดำเนินการ INTERSECT จะใช้เพื่อส่งกลับระเบียนในทั้งชุดข้อมูลหรือคำสั่ง SELECT ถ้าระเบียนมีอยู่ในแบบสอบถามเดียวเท่านั้น ระเบียนนั้นจะถูกลบออกจากชุดผลลัพธ์ของ INTERSECT
แบบสอบถาม INTERSECT
แสดงภาพประกอบผลลัพธ์จากการสืบค้น INTERSECT
คำอธิบาย: แบบสอบถาม INTERSECT จะส่งกลับระเบียนที่อยู่ในพื้นที่เติมสีน้ำเงิน ระเบียนเหล่านี้อยู่ในทั้งฐานข้อมูล1 และฐานข้อมูล2
แต่ละ SELECT ใน INTERSECT จะต้องมีจำนวนคอลัมน์เท่ากันในชุดผลลัพธ์ที่มีประเภทข้อมูลเดียวกัน
ไวยากรณ์ตัวดำเนินการ INTERSECT
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien]
INTERSECT
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kie
n];
ชื่อตัวแปรหรือค่าตัวแปร
bieu_thuc
คอลัมน์หรือค่าที่คุณต้องการเปรียบเทียบระหว่างคำสั่ง SELECT ไม่จำเป็นต้องอยู่ในฟิลด์ข้อมูลเดียวกันในแต่ละคำสั่ง SELECT แต่คอลัมน์ที่เกี่ยวข้องจะต้องมีข้อมูลเดียวกัน
ระบุ
Table ต้องการรับระเบียนจากที่นั่น ต้องมีอย่างน้อย 1 ตารางในส่วนคำสั่ง FROM
WHERE dieu_kien
ตัวเลือก ต้องเป็นไปตามเงื่อนไขสำหรับบันทึกที่เลือก
หมายเหตุ:
- คำสั่ง SELECT สองรายการต้องมีจำนวนนิพจน์เท่ากัน
- คอลัมน์ที่เกี่ยวข้องในแต่ละคำสั่ง SELECT ต้องมีประเภทข้อมูลเหมือนกัน
- ตัวดำเนินการ INTERSECT จะคืนค่าเฉพาะระเบียนทั่วไประหว่างคำสั่ง SELECT
ตัวอย่างเช่น - มี 1 นิพจน์
SELECT sanpham_id
FROM sanpham
INTERSECT
SELECT sanpham_id
FROM hangtonk
ho;
ในตัวอย่างนี้ ถ้า sanpham_id ปรากฏบนทั้งตาราง sanpham และ hangtonkho จะอยู่ในชุดผลลัพธ์ของ INTERSECT
เพิ่มเงื่อนไข WHERE ให้กับข้อความค้นหานี้
SELECT sanpham_id
FROM sanpham
WHERE sanpham_id >= 50
INTERSECT
SELECT sanpham_id
FROM hangtonkho
WHERE soluong >
0;
ชุดข้อมูลแรกจะกรองและส่งคืนระเบียนในแดชบอร์ดและ sanpham_id
มากกว่าหรือเท่ากับ 50 ชุดข้อมูลที่สองจะกรองจาก hangtonkho
ตารางถ้าตัวเลขมากกว่า 0
ตัวอย่างเช่น - มีหลายนิพจน์
SELECT danhba_id, ho, ten
FROM danhba
WHERE ho = 'Anderson'
INTERSECT
SELECT nhanvien_id, ho, ten
FROM nh
anvien;
ในตัวอย่างนี้ เคียวรีส่งคืนผลลัพธ์ของการตัดกันของคำสั่ง SELECT สองคำสั่ง หากมีบันทึกอยู่ในรายการ danhba
นั้น danhba_id
, ho
, ten
danhba
danhba_id
ชื่อของแบบสอบถาม INTERSECT จะส่งคืนระเบียนเหล่านั้น
ตัวอย่างเช่น - ใช้ ORDER BY
ใช้คำสั่งย่อย ORDER BY กับคำสั่ง INTERSECT เพื่อจัดเรียงผลลัพธ์
SELECT nhacung_id, nhacung_ten
FROM nhacung
WHERE nhacung_id > 500
INTERSECT
SELECT congty_id, congty_ten
FROM congty
WHERE congty_ten in ('Apple', 'Microsoft', 'SQL Server')
ORDER BY 2;
เนื่องจากชื่อคอลัมน์ในคำสั่ง SELECT สองคำสั่งต่างกัน การอ้างอิงคอลัมน์ในส่วนคำสั่ง ORDER BY จะง่ายกว่าตามตำแหน่งในชุดผลลัพธ์ ในตัวอย่างข้างต้น เรากรองผลลัพธ์ nhacung_ten
/ congty_ten
เรียงจากน้อยไปมากโดยใช้วลี ORDER BY 2
เพราะว่า nhacung_ten
/ congty_ten
เป็นที่ 2 ในชุดผลลัพธ์