КРОМЕ ключевого слова в Oracle

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

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

Решение

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

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

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

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;

4.6 Установить операторы

Операторы множества объединяют результаты двух компонентных запросов в один результат.

ИСКЛЮЧАЯ все отдельные строки, выбранные первым запросом, но не вторым

ИСКЛЮЧАЯ ВСЕ Все строки, выбранные первым запросом, но не вторым, включая дубликаты

Другие вопросы по тегам