Синтаксис 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

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