web-dev-qa-db-fra.com

SAUF mot clé dans Oracle

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
  );
12
0x56794E

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.

19
BellevueBob

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;

4.6 Définir les opérateurs

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

0
Lukasz Szozda