Dans Oracle Database, le MINUS
est utilisé pour renvoyer uniquement les lignes uniques renvoyées par la première requête mais pas par la seconde.
Exemple
Supposons que nous ayons les tables suivantes :
SELECT * FROM Teachers;
SELECT * FROM Students;
Résultat :
TEACHERID | NOM DE L'ENSEIGNANT |
---|---|
1 | Warren |
2 | Ben |
3 | Cathy |
4 | Cathy |
5 | Facture |
6 | Facture |
ID ÉTUDIANT | NOM DE L'ÉTUDIANT |
---|---|
1 | Faye |
2 | Jet |
3 | Pointe |
4 | Ein |
5 | Warren |
6 | Facture |
Nous pouvons utiliser le MINUS
opérateur pour renvoyer les enseignants qui ne sont pas aussi des étudiants :
SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students;
Résultat :
NOM DE L'ENSEIGNANT |
---|
Ben |
Cathy |
Nous n'obtenons donc que les valeurs qui apparaissent dans le Teachers
tableau qui n'apparaissent pas également dans le Students
table.
Nous pouvons obtenir des résultats différents, selon la table qui se trouve à gauche et celle qui se trouve à droite. Voici un exemple qui met les Students
table à gauche et Teachers
à droite :
SELECT StudentName FROM Students
MINUS
SELECT TeacherName FROM Teachers;
Résultat :
NOM DE L'ÉLÈVE |
---|
Ein |
Faye |
Jet |
Pointe |
Cette fois, nous obtenons des étudiants qui ne sont pas aussi des enseignants.
Le MINUS
L'opérateur renvoie uniquement des lignes distinctes. Ainsi, dans notre exemple, une seule ligne est renvoyée pour Cathy
, même s'il y a deux professeurs portant ce nom.
Une alternative
Il est possible d'obtenir le même résultat sans utiliser le MINUS
opérateur. Par exemple, nous pourrions réécrire notre premier exemple en ceci :
SELECT
DISTINCT TeacherName
FROM Teachers t
WHERE NOT EXISTS (SELECT StudentName FROM Students s
WHERE t.TeacherName = s.StudentName);
Résultat :
NOM DE L'ENSEIGNANT |
---|
Ben |
Cathy |
MINUS
Equivalents dans d'autres SGBDR
MINUS
d'Oracle l'opérateur est similaire à EXCEPT
opérateur utilisé par de nombreux autres SGBDR. MariaDB a un EXCEPT
opérateur, mais il a également introduit un MINUS
opérateur comme synonyme pouvant être utilisé en mode Oracle.