Tags:

Mệnh đề Except trong SQL

Mệnh đề INTERSECT hoạt động ngược hoàn toàn so với INTERSECT. Mệnh đề EXCEPT trong SQL được sử dụng để kết hợp hai lệnh SELECT và trả về các hàng từ lệnh SELECT đầu tiên mà không được trả về bởi lệnh SELECT thứ hai. Nghĩa là, mệnh đề EXCEPT chỉ trả về các hàng, mà không có sẵn trong lệnh SELECT thứ hai.

Except trong SQL

Cú pháp

SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien]
EXCEPT
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien];

Tên biến hoặc giá trị biến

bieu_thuc

Cột hoặc giá trị mà bạn muốn so sánh giữa 2 lệnh SELECT. Chúng không nhất thiết phải nằm trong cùng 1 trường thông tin ở mỗi lệnh SELECT nhưng các cột tương ứng phải có dữ liệu giống nhau.

bang

Bảng muốn lấy dữ liệu từ đó. Phải có ít nhất 1 bảng trong mệnh đề FROM.

WHERE dieu_kien

Các điều kiện trên dữ liệu được SELECT.

Lưu ý:

  • Hai lệnh SELECT phải có cùng số cột
  • Mỗi cặp đôi một trong 2 mệnh đề SELECT phải cùng kiểu dữ liệu
  • Toán tử EXCEPT trả về tất cả bản ghi từ lệnh SELECT đầu tiên và không nằm trong lệnh SELECT thứ 2.

Bảng CUSTOMERS

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Bảng ORDERS

+-----+---------------------+-------------+--------+
|OID  | DATE                | CUSTOMER_ID | AMOUNT |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   3000 |
| 100 | 2009-10-08 00:00:00 |           3 |   1500 |
| 101 | 2009-11-20 00:00:00 |           2 |   1560 |
| 103 | 2008-05-20 00:00:00 |           4 |   2060 |
+-----+---------------------+-------------+--------+

Bây giờ, chúng ta hãy nối hai bảng này trong câu lệnh SELECT như hình dưới đây.

SQL> SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   LEFT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
EXCEPT
   SELECT  ID, NAME, AMOUNT, DATE
   FROM CUSTOMERS
   RIGHT JOIN ORDERS
   ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Kết quả sẽ là

+----+---------+--------+---------------------+
| ID | NAME    | AMOUNT | DATE                |
+----+---------+--------+---------------------+
|  1 | Ramesh  |   NULL | NULL                |
|  5 | Hardik  |   NULL | NULL                |
|  6 | Komal   |   NULL | NULL                |
|  7 | Muffy   |   NULL | NULL                |
+----+---------+--------+---------------------+
 

Nguồn tham khảo

https://www.geeksforgeeks.org/sql-intersect-except-clause/

https://www.tutorialspoint.com/sql/sql-except-clause.htm

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x