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.