Требуется уточнение объединения Oracle для запроса с объединением объединения - PullRequest
0 голосов
/ 31 декабря 2018

ниже - это просто пример, который напоминает запрос на объединение, который я выполняю.У меня есть вопрос вокруг таблицы псевдонимов XYZ_1.Как oracle заботится о такой таблице псевдонимов, созданной вместе с union?oracle выполняет оба оператора в разных SGA и, следовательно, они не видны друг другу?

select * from
abc, (select a from xyx where c='yes') xyz_1
where
abc.col_1 = xyz_1.col_1
union
select * from
abc, (select a from xyx where c='no') xyz_1
where
abc.col_1 = xyz_1.col_1

1 Ответ

0 голосов
/ 31 декабря 2018

UNION - оператор множества, функция которого состоит в объединении результатов двух запросов.Оба запроса выполняются независимо, иначе можно использовать один и тот же псевдоним таблицы в обоих запросах, как это обычно делается в подзапросе, например.Единственное ограничение при использовании UNION состоит в том, что два запроса должны возвращать одинаковое количество полей и с одинаковыми типами данных (учитывая, что может происходить неявное преобразование).

Документы Oracle не позволяютупомяните о любых ограничениях на псевдонимы в подзапросах:

Вы можете объединить несколько запросов, используя операторы множеств UNION, UNION ALL, INTERSECT и MINUS.Все операторы множеств имеют одинаковый приоритет.Если инструкция SQL содержит несколько операторов множеств, Oracle Database оценивает их слева направо, если в скобках явно не указан другой порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...