ใน SQL Server (Transact-SQL) ตัวดำเนินการ INTERSECT ใช้คืนค่าระเบียนที่มีในทั้งสองชุดข้อมูลหรือคำสั่ง SELECT หากระเบียนมีอยู่ในคิวรี่หนึ่งเพียงอย่างเดียวและไม่มีในอีกคิวรี่ จะถูกลบออกจากชุดผลลัพธ์ของ INTERSECT
คิวรี่ INTERSECT

ภาพประกอบผลลัพธ์ที่คืนจากคิวรี่ INTERSECT
คำอธิบาย: คิวรี่ INTERSECT จะคืนค่าระเบียนที่อยู่ในพื้นที่สีฟ้า ระเบียนเหล่านี้มีอยู่ในทั้ง database1 และ database2
แต่ละ 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_kien];
ชื่อตัวแปรหรือค่าตัวแปร
bieu_thuc: คอลัมน์หรือค่าที่ต้องการเปรียบเทียบระหว่างคำสั่ง SELECT พวกเขาไม่จำเป็นต้องอยู่ในฟิลด์ข้อมูลเดียวกันในแต่ละ SELECT แต่คอลัมน์ที่สอดคล้องกันต้องมีข้อมูลชนิดเดียวกัน
bang: ตารางที่ต้องการดึงระเบียน ต้องมีอย่างน้อย 1 ตารางในคำสั่ง FROM
WHERE dieu_kien: ทางเลือก เงื่อนไขที่ต้องเป็นไปตามสำหรับระเบียนที่เลือก
หมายเหตุ:
- คำสั่ง SELECT สองคำสั่งต้องมีจำนวนนิพจน์เท่ากัน
- คอลัมน์ที่สอดคล้องในแต่ละคำสั่ง SELECT ต้องมีชนิดข้อมูลเดียวกัน
- ตัวดำเนินการ INTERSECT คืนค่าระเบียนทั่วไประหว่างคำสั่ง SELECT เท่านั้น
ตัวอย่าง - กับ 1 นิพจน์
SELECT sanpham_id
FROM sanpham
INTERSECT
SELECT sanpham_id
FROM hangtonkho;
ในตัวอย่างนี้ หาก 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 ที่ sanpham_id มากกว่าหรือเท่ากับ 50 ชุดข้อมูลที่สองจะกรองจากตาราง hangtonkho หากจำนวนมากกว่า 0
ตัวอย่าง - กับหลายนิพจน์
SELECT danhba_id, ho, ten
FROM danhba
WHERE ho = 'Anderson'
INTERSECT
SELECT nhanvien_id, ho, ten
FROM nhanvien;
ในตัวอย่างนี้ คิวรี่คืนค่าผลลัพธ์ของการจับคู่ของสองคำสั่ง SELECT หากมีระเบียนในตาราง danhba ที่ danhba_id, ho, ten ตรงกับ nhanvien_id, ho, ten ในตาราง nhanvien คิวรี่ INTERSECT จะคืนค่าระเบียนเหล่านั้น
ตัวอย่าง - ใช้ ORDER BY
ใช้คำสั่ง ORDER BY ร่วมกับคิวรี่ INTERSECT เพื่อจัดเรียงผลลัพธ์
SELECT nhacungcap_id, nhacungcap_ten
FROM nhacungcap
WHERE nhacungcap_id > 500
INTERSECT
SELECT congty_id, congty_ten
FROM congty
WHERE congty_ten IN ('Apple', 'Microsoft', 'SQL Server')
ORDER BY 2;
เนื่องจากชื่อคอลัมน์ในสองคำสั่ง SELECT ต่างกัน จึงสะดวกกว่าที่จะอ้างอิงคอลัมน์ในคำสั่ง ORDER BY โดยตำแหน่งในชุดผลลัพธ์ ในตัวอย่างด้านบน เรากรองผลลัพธ์ nhacungcap_ten/congty_ten ในลำดับเพิ่มผ่านคำสั่ง ORDER BY 2
เนื่องจาก nhacungcap_ten/congty_ten เป็นตัวที่ 2 ในชุดผลลัพธ์