Trong bài viết này, chúng ta sẽ cùng tìm hiểu về toán tử MINUS
trong SQL và cách mô phỏng MINUS
trong MySQL bằng phép nối.
Lưu ý rằng MySQL không hỗ trợ MINUStoán tử. Hướng dẫn này chỉ cho bạn cách mô phỏng toán tử MINUS trong MySQL bằng cách sử dụng các mệnh đề nối.
SQL MINUS
Toán tử MINUS
là một trong ba toán tử tập hợp trong tiêu chuẩn SQL bao gồm UNION
, INTERSECT
và.
MINUS
so sánh kết quả của hai truy vấn và trả về các hàng riêng biệt từ tập kết quả của truy vấn đầu tiên không xuất hiện trong tập kết quả của truy vấn thứ hai.
Sau đây minh họa cú pháp của toán tử MINUS
:
SELECT select_list1 FROM table_name1 MINUS SELECT select_list2 FROM table_name2;
Các quy tắc cơ bản cho truy vấn sử dụng toán tử MINUS
như sau:
select_list1
và select_list2
phải giống nhau.Giả sử rằng chúng ta có hai bảng t1
và t2
với cấu trúc và dữ liệu sau:
CREATE TABLE t1 ( id INT PRIMARY KEY ); CREATE TABLE t2 ( id INT PRIMARY KEY ); INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t2 VALUES (2),(3),(4);
Truy vấn sau đây trả về các giá trị riêng biệt từ truy vấn của bảng t1
không được tìm thấy trong kết quả truy vấn của bảng t2
.
SELECT id FROM t1 MINUS SELECT id FROM t2;
Biểu đồ Venn sau đây minh họa cách hoạt động của MINUS
:
Lưu ý rằng một số hệ thống cơ sở dữ liệu, chẳng hạn như Microsoft SQL Server và PostgreSQL sử dụng phần mở rộng EXCEPT
thay vì MINUS
. Chúng có cùng chức năng.
Thật không may, MySQL không hỗ trợ toán tử MINUS
. Tuy nhiên, bạn có thể sử dụng MySQL JOIN để mô phỏng nó.
Để mô phỏng hai truy vấn MINUS
, bạn sử dụng cú pháp sau:
SELECT select_list FROM table1 LEFT JOIN table2 ON join_predicate WHERE table2.column_name IS NULL;
Ví dụ: truy vấn sau sử dụng mệnh đế LEFT JOIN
để trả về kết quả giống như toán tử MINUS
:
SELECT id FROM t1 LEFT JOIN t2 USING (id) WHERE t2.id IS NULL;
Trong bài viết này, bạn đã học về toán tử MINUS trong SQL và cách mô phỏng toán tử MINUS trong MySQL bằng cách sử dụng mệnh đề LEFT JOIN
.
Các bạn có thể tham khảo: https://www.mysqltutorial.org/mysql-minus/
Các bài viết liên quan:
Bình luận: