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.