Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Giải thích về toán tử Oracle MINUS

Trong Cơ sở dữ liệu Oracle, MINUS toán tử được sử dụng để chỉ trả về các hàng duy nhất được trả về bởi truy vấn đầu tiên chứ không phải bởi truy vấn thứ hai.

Ví dụ

Giả sử chúng ta có các bảng sau:

SELECT * FROM Teachers;
SELECT * FROM Students;

Kết quả:

GIÁO VIÊN GIẢNG VIÊN
1 Warren
2 Ben
3 Cathy
4 Cathy
5 Hóa đơn
6 Hóa đơn
STUDENTID STUDENTNAME
1 Faye
2 Máy bay phản lực
3 Spike
4 Ein
5 Warren
6 Hóa đơn

Chúng ta có thể sử dụng MINUS toán tử để trả lại giáo viên không phải là sinh viên:

SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students;

Kết quả:

EDERNAME
Ben
Cathy

Vì vậy, chúng tôi chỉ nhận được các giá trị xuất hiện trong Teachers bảng cũng không xuất hiện trong Students bàn.

Chúng ta có thể nhận được các kết quả khác nhau, tùy thuộc vào bảng nào ở bên trái và bảng nào ở bên phải. Đây là một ví dụ đặt Students bảng bên trái và Teachers ở bên phải:

SELECT StudentName FROM Students
MINUS
SELECT TeacherName FROM Teachers;

Kết quả:

STUDENTNAME
Ein
Faye
Máy bay phản lực
Spike

Lần này, chúng tôi có những sinh viên không phải là giáo viên.

MINUS toán tử chỉ trả về các hàng riêng biệt. Vì vậy, trong ví dụ của chúng tôi, chỉ một hàng được trả về cho Cathy , mặc dù có hai giáo viên có tên đó.

Một giải pháp thay thế

Có thể nhận được kết quả tương tự mà không cần sử dụng MINUS nhà điều hành. Ví dụ:chúng tôi có thể viết lại ví dụ đầu tiên của chúng tôi thành ví dụ này:

SELECT 
    DISTINCT TeacherName
FROM Teachers t
WHERE NOT EXISTS (SELECT StudentName FROM Students s
WHERE t.TeacherName = s.StudentName);

Kết quả:

EDERNAME
Ben
Cathy

MINUS Tương đương trong RDBMS khác

MINUS của Oracle toán tử tương tự với EXCEPT toán tử mà nhiều RDBMS khác sử dụng. MariaDB có EXCEPT nhưng nó cũng đã giới thiệu một MINUS toán tử như một từ đồng nghĩa có thể được sử dụng khi ở chế độ Oracle.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bật SSL hoặc TLS trong Oracle Apps R12

  2. Làm cách nào để thay đổi định dạng ngày từ MM / DD / YYYY thành YYYY-MM-DD trong PL / SQL?

  3. làm thế nào để chuyển một tên bảng làm tham số cho thủ tục được lưu trữ?

  4. Mảng trong mệnh đề IN () oracle PLSQL

  5. Tùy chọn định dạng SQLcl (Oracle)