Синтаксис Oracle для подвыбора в предложении FROM?
В соответствии с использованием подзапросов Oracle SQL принимает подзапрос в предложении from оператора select, например
SELECT * FROM ( SELECT a FROM b );
Однако, глядя на документацию SELECT, я не вижу возможности получить выбор / подзапрос в предложении from (например, из правил table_reference
или же join_clause
).
Я что-то здесь упускаю, эта часть грамматики SQL задокументирована в другом месте? Или это еще одна неполная часть документации?
3 ответа
В документации, которую вы указали, вы можете видеть, что table_reference
может быть query_table_expression
который может быть ( subquery )
,
Синтаксические диаграммы Oracle довольно основательны:
Имена, которые вы ищете:
- ссылка на таблицу -> запрос-таблица-выражение
- выражение таблицы запросов -> подзапрос
Это немного сбивает с толку из-за необязательного lateral
,
Я действительно задаюсь вопросом, разрешено ли боковое выражение везде, где разрешено выражение.
Каждая производная таблица должна иметь свой псевдоним.
Вы можете использовать что-то вроде
SELECT * FROM b
WHERE a >
(SELECT a FROM b
WHERE a='India')
Или просто использовать
SELECT * FROM b
WHERE (SELECT a FROM b)
Но таким образом у вас будет более 1 строки. Если вы не будете использовать условие Where