Trong bài viết này, chúng ta sẽ cùng tìm hiểu về toán tử INTERSECT và chỉ cách hoạt động của toán tử MySQL INTERSECT.
Lưu ý rằng MySQL không hỗ trợ toán tử INTERSECT. Bài viết này se giới thiệu cho bạn cáchs sử dụng toán tử INTERSECT trong MySQL bằng cách sử dụng các mệnh đề nối.
INTERSECTToán tử INTERSECT là toán tử tập hợp chỉ trả về các hàng riêng biệt của hai truy vấn trở lên.
Sau đây minh họa cú pháp của toán tử INTERSECT.
(SELECT column_list FROM table_1) INTERSECT (SELECT column_list FROM table_2);
Toán tử INTERSECT sẽ so sánh tập hợp kết quả của hai truy vấn và trả về các hàng riêng biệt được xuất ra bởi cả hai truy vấn.
Để sử dụng toán tử INTERSECT cho hai truy vấn, bạn tuân theo các quy tắc sau:
Sơ đồ sau đây minh họa về toán tử INTERSECT.

Truy vấn bên trái tạo ra một tập hợp kết quả là (1,2,3).
Truy vấn bên phải trả về tập hợp kết quả là (2,3,4).
Toán tử INTERSECT trả về các hàng riêng biệt của cả hai tập hợp kết quả bao gồm (2,3).
Không giống như toán tử UNION, toán tử INTERSECT trả về giao điểm giữa hai đường tròn.
Lưu ý rằng tiêu chuẩn SQL có ba toán tử tập hợp bao gồm UNION, INTERSECT và MINUS.
INTERSECT trong MySQLThật không may, MySQL không hỗ trợ toán tử INTERSECT. Tuy nhiên, bạn có thể mô phỏng chức năng của toán tử INTERSECT.
Các câu lệnh sau đây tạo bảng t1 và t2, sau đó chèn dữ liệu vào cả hai bảng.
CREATE TABLE t1 (
id INT PRIMARY KEY
);
CREATE TABLE t2 LIKE t1;
INSERT INTO t1(id) VALUES(1),(2),(3);
INSERT INTO t2(id) VALUES(2),(3),(4);Truy vấn sau trả về các hàng từ bảng t1.
SELECT id FROM t1;
id ---- 1 2 3
Truy vấn sau trả về các hàng từ bảng t2
SELECT id FROM t2;
id --- 2 3 4
INTERSECT sử dụng DISTINCT và INNER JOINCâu lệnh sau sử dụng toán tử DISTINCT và mệnh đề INNER JOIN để trả về các hàng riêng biệt trong cả hai bảng:
SELECT DISTINCT id FROM t1 INNER JOIN t2 USING(id);
id ---- 2 3
Cách hoạt động của câu lệnh trên:
INNER JOIN trả về các hàng từ cả hai bảng bên trái và bên phải.DISTINCT loại bỏ các hàng trùng lặp.INTERSECT using IN and subqueryCâu lệnh sau đây sử dụng toán tử IN và truy vấn con để trả về giao điểm của hai tập hợp kết quả.
SELECT DISTINCT id FROM t1 WHERE id IN (SELECT id FROM t2);
id ---- 2 3
Cách hoạt động của câu lệnh trên:
IN để chỉ chọn các giá trị tồn tại trong tập hợp kết quả đầu tiên. Toán tử DISTINCT đảm bảo rằng chỉ các giá trị riêng biệt được chọn.Trong bài viết này, bạn đã học được một vài cách để mô phỏng chức năng của toán tử INTERSECT trong MySQL.
Các bạn có thể tham khảo: https://www.mysqltutorial.org/mysql-intersect/
Các bài viết liên quan:
Bình luận: