Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL Server

Toán tử INTERSECT trong SQL Server

Mô tả

INTERSECT trả về các bản ghi xuất hiện trong CẢ HAI tập kết quả (SELECT). Bản ghi chỉ có ở một phía sẽ bị loại bỏ.

Toán tử INTERSECT trong SQL Server

Vùng xanh: bản ghi có trong cả hai truy vấn.

Điều kiện:

  • Hai SELECT phải có cùng số cột.
  • Cột tương ứng phải cùng kiểu dữ liệu.

Cú pháp

SELECT bieu_thuc1, bieu_thuc2, ..., bieu_thuc_n
FROM bang
[WHERE dieu_kien]
INTERSECT
SELECT bieu_thuc1, bieu_thuc2, ..., bieu_thuc_n
FROM bang
[WHERE dieu_kien];

Tham số:

  • bieu_thuc: Cột/giá trị so sánh (không cần cùng tên cột, nhưng cùng kiểu).
  • bang: Bảng nguồn.
  • dieu_kien: Bộ lọc (tùy chọn).

Ví dụ

1 biểu thức (1 cột)

SELECT sanpham_id
FROM sanpham
INTERSECT
SELECT sanpham_id
FROM hangtonkho;

Trả về sanpham_id có ở cả 2 bảng.

Có điều kiện WHERE

SELECT sanpham_id
FROM sanpham
WHERE sanpham_id >= 50
INTERSECT
SELECT sanpham_id
FROM hangtonkho
WHERE soluong > 0;

Nhiều biểu thức (nhiều cột)

SELECT danhba_id, ho, ten
FROM danhba
WHERE ho = 'Anderson'
INTERSECT
SELECT nhanvien_id, ho, ten
FROM nhanvien;

Trả về bản ghi khớp cả 3 cột: danhba_id=nhanvien_id, ho, ten.

Dùng ORDER BY

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;

Sắp xếp theo cột thứ 2 (tên) vì tên cột 2 bên khác nhau.