#oracle #operator-keyword #not-exists #notin
#Oracle #оператор-ключевое слово #не существует #notin
Вопрос:
У меня есть запрос, который я хочу заменить. Я не хочу использовать оператор «минус».
SELECT t1_col1, t1_col2
FROM t1
WHERE (t1_col1, t1_col3)
IN (SELECT t2_col1, t2_col2
FROM t2
WHERE t2_col3 = '123456'
MINUS (SELECT t3_col1, t3_col2
FROM t3
WHERE t3_col4 = '123456'
UNION SELECT t3_col3, t3_col2
FROM t3 WHERE t3_col4 = '123456'));
Любая помощь будет оценена. Спасибо!
Комментарии:
1. Почему? В чем проблема с MINUS?
2. Вы пробовали «НЕ СУЩЕСТВУЕТ»?
3. Он не поддерживается фреймворком, который я пытаюсь использовать. Я пробовал это, но он не отображает результаты, которые я ожидаю, я просто заменил МИНУС на И НЕ СУЩЕСТВУЕТ. Я не знаю, нужно ли мне обновлять что-то еще.
Ответ №1:
SELECT t1_col1, t1_col2
FROM t1
WHERE (t1_col1, t1_col3)
IN
(
SELECT t2_col1, t2_col2
FROM t2 , (
SELECT t3_col1 as C1, t3_col2 AS C2
FROM t3
WHERE t3_col4 = '123456'
UNION
SELECT t3_col3, t3_col2
FROM t3
WHERE t3_col4 = '123456'
) x
WHERE t2_col3 = '123456'
and t2_col1 = X.C1 ( )
and t2_col2 = x.c2 ( )
and X.C1 is null
and x.c2 is null
)