Oracle - за исключением ошибки - PullRequest
2 голосов
/ 19 февраля 2012

Есть несколько столбцов и таблиц, как показано ниже:

ПРИМЕЧАНИЕ : Названия элементов используются только в иллюстративных целях.

SELECT T.col1 
FROM Table1 T 
WHERE NOT EXISTS (
   (SELECT * FROM Table2) 
     EXCEPT (SELECT TT.col1 
             FROM TableTT TT 
             WHERE TT.col2 = T.col2)
     );

Ошибка: отсутствует правая скобка , хотя скобки, кажется, совпадают.

Но я знаю, что это не имеет ничего общего с круглыми скобками. И я подозреваю, что ошибка где-то в предложении EXCEPT . Что могло привести к ошибке?

1 Ответ

7 голосов
/ 19 февраля 2012

В Oracle нет оператора EXCEPT. Вместо этого используйте MINUS. Справка: Здесь

В вашем запросе слово «EXCEPT», скорее всего, рассматривается как псевдоним таблицы для (SELECT * FROM Table2) подзапроса.

UPDATE:

Полный запрос для предоставленной структуры данных будет выглядеть так:

SELECT T.col1 
FROM Table1 T 
WHERE NOT EXISTS 
((SELECT col1 FROM Table2) 
MINUS 
(SELECT TT.col1 FROM TableTT TT WHERE TT.col2 = T.col2));

Обратите внимание, что я изменил * на col1 для Table2 - если вы выбираете один столбец INT TT.col1 из TT, вам также следует выбрать один столбец INT из Table2.

...