I Oracle Database er MINUS operator bruges til kun at returnere unikke rækker, der returneres af den første forespørgsel, men ikke af den anden.
Eksempel
Antag, at vi har følgende tabeller:
SELECT * FROM Teachers;
SELECT * FROM Students; Resultat:
| LÆRERID | TEACHERNAME |
|---|---|
| 1 | Warren |
| 2 | Ben |
| 3 | Cathy |
| 4 | Cathy |
| 5 | Bill |
| 6 | Bill |
| STUDENTID | STUDENTNAME |
|---|---|
| 1 | Faye |
| 2 | Jet |
| 3 | Spike |
| 4 | Ein |
| 5 | Warren |
| 6 | Bill |
Vi kan bruge
SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students; Resultat:
| LÆRERNAVN |
|---|
| Ben |
| Cathy |
Så vi får kun værdier, der vises i Teachers tabel, der ikke også vises i Studenter bord.
Vi kan få forskellige resultater, alt efter hvilken tabel der er til venstre og hvilken der er til højre. Her er et eksempel, der sætter Studenter tabel til venstre og Lærere til højre:
SELECT StudentName FROM Students
MINUS
SELECT TeacherName FROM Teachers; Resultat:
| STUDENTNAME |
|---|
| Ein |
| Faye |
| Jet |
| Spike |
Denne gang får vi elever, der ikke også er lærere.
Cathy , selvom der er to lærere med det navn.
Et alternativ
Det er muligt at få det samme resultat uden at bruge
SELECT
DISTINCT TeacherName
FROM Teachers t
WHERE NOT EXISTS (SELECT StudentName FROM Students s
WHERE t.TeacherName = s.StudentName); Resultat:
| LÆRERNAVN |
|---|
| Ben |
| Cathy |
MINUS Ækvivalenter i andre RDBMS'er
Oracles MINUS operatoren ligner EXCEPT operatør, som mange andre RDBMS'er bruger. MariaDB har en EXCEPT operatør, men den har også indført en MINUS operator som et synonym, der kan bruges i Oracle-tilstand.