J'essaie d'utiliser le mot clé EXCEPT dans Oracle 10.1.0.2.0, mais j'obtenais toujours l'erreur "Commande inconnue". J'ai essayé de googler et quelqu'un a dit que le mot clé était MOINS, j'ai donc utilisé MOINS à la place, mais j'ai toujours la même erreur. Une idée? Merci.
Voici donc ma requête. Je recherche le nom des étudiants qui s'inscrivent à TOUS les cours avec un numéro de cours> 500
SELECT s.name
FROM Students s
WHERE NOT EXISTS
(
SELECT c.id
FROM Courses c
WHERE c.number > 500
MINUS
SELECT e.course_id
FROM Enrollment e
WHERE e.student_id = s.id
);
Oracle MINUS
est un opérateur; c'est équivalent à EXCEPT
dans SQL Server. Voici un post précédent expliquant la différence. Voici un exemple trivial:
SELECT a, b, c
FROM table_a
MINUS
SELECT a, b, c
FROM table_b
Si vous rencontrez toujours des problèmes, ajoutez la requête complète que vous utilisez à votre question; c'est probablement une simple erreur de syntaxe.
Oracle 20c prendra en charge EXCEPT/EXCEPT ALL
mots-clés.
SELECT col1, col2
FROM t1
EXCEPT
SELECT col1, col2
FROM t2;
ou EXCEPT ALL
si vous souhaitez gérer les doublons:
SELECT col1, col2
FROM t1
EXCEPT ALL
SELECT col1, col2
FROM t2;
Les opérateurs d'ensemble combinent les résultats de deux requêtes de composants en un seul résultat.
[~ # ~] sauf [~ # ~] Toutes les lignes distinctes sélectionnées par la première requête mais pas la seconde
SAUF TOUT Toutes les lignes sélectionnées par la première requête mais pas la seconde, y compris les doublons