Di Oracle Database, MINUS operator digunakan untuk mengembalikan hanya baris unik yang dikembalikan oleh kueri pertama tetapi tidak untuk yang kedua.
Contoh
Misalkan kita memiliki tabel berikut:
SELECT * FROM Teachers;
SELECT * FROM Students; Hasil:
| TEACHERID | NAMA GURU |
|---|---|
| 1 | Warren |
| 2 | Ben |
| 3 | Cathy |
| 4 | Cathy |
| 5 | Tagihan |
| 6 | Tagihan |
| STUDENTID | NAMA MAHASISWA |
|---|---|
| 1 | Faye |
| 2 | Jet |
| 3 | Lonjakan |
| 4 | Ein |
| 5 | Warren |
| 6 | Tagihan |
Kita bisa menggunakan MINUS operator untuk mengembalikan guru yang bukan juga siswa:
SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students; Hasil:
| NAMA GURU |
|---|
| Ben |
| Cathy |
Jadi kita hanya mendapatkan nilai yang muncul di Teachers tabel yang juga tidak muncul di Students meja.
Kita bisa mendapatkan hasil yang berbeda, tergantung tabel mana yang di kiri dan mana yang di kanan. Berikut adalah contoh yang menempatkan Students tabel di sebelah kiri dan Teachers di sebelah kanan:
SELECT StudentName FROM Students
MINUS
SELECT TeacherName FROM Teachers; Hasil:
| NAMA MAHASISWA |
|---|
| Ein |
| Faye |
| Jet |
| Spike |
Kali ini kami mendapatkan siswa yang bukan juga guru.
MINUS operator mengembalikan baris yang berbeda saja. Jadi dalam contoh kita, hanya satu baris yang dikembalikan untuk Cathy , meskipun ada dua guru dengan nama itu.
Alternatif
Anda bisa mendapatkan hasil yang sama tanpa menggunakan MINUS operator. Misalnya, kita dapat menulis ulang contoh pertama kita menjadi ini:
SELECT
DISTINCT TeacherName
FROM Teachers t
WHERE NOT EXISTS (SELECT StudentName FROM Students s
WHERE t.TeacherName = s.StudentName); Hasil:
| NAMA GURU |
|---|
| Ben |
| Cathy |
MINUS Setara di RDBMS Lain
MINUS Oracle operator mirip dengan EXCEPT operator yang banyak digunakan RDBMS lainnya. MariaDB memiliki EXCEPT operator, tetapi juga telah memperkenalkan MINUS operator sebagai sinonim yang dapat digunakan saat dalam mode Oracle.