Ключевое слово EXCEPT в Oracle

Я пытаюсь использовать ключевое слово EXCEPT в Oracle 10.1.0.2.0, но все время получал ошибку "Неизвестная команда". Я пробовал погулять, и кто-то сказал, что ключевое слово MINUS, поэтому вместо этого я использовал MINUS, но у меня все еще была такая же ошибка. Есть идеи? Спасибо.

Итак, вот мой запрос. Я нахожу имя студентов, которые зачисляются на ВСЕ курсы с номером курсa > 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
  );

Ответ 1

Oracle MINUS - оператор; это эквивалентно EXCEPT в SQL Server. Вот предыдущее сообщение, объясняющее разницу. Здесь тривиальный пример:

SELECT a, b, c
FROM   table_a
MINUS
SELECT a, b, c
FROM   table_b

Если у вас все еще есть проблемы, добавьте полный запрос, который вы используете в свой вопрос; это, вероятно, простая синтаксическая ошибка.

Ответ 2

Oracle 20c будет поддерживать EXCEPT/EXCEPT ALL ключевые слова.

SELECT col1, col2
FROM t1
EXCEPT
SELECT col1, col2
FROM t2;

или EXCEPT ALL, если вы хотите обрабатывать дубликаты:

SELECT col1, col2
FROM t1
EXCEPT ALL
SELECT col1, col2
FROM t2;