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.
INTERSECT
Toá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 JOIN
Câ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: