Почему не работает следующее?
SELECT name FROM (SELECT name FROM agentinformation)
Я думаю, что мое понимание SQL неверно, потому что я думал, что это вернет то же самое, что и
SELECT name FROM agentinformation
Разве внутренний оператор выбора не создает результирующий набор, который затем запрашивает внешний оператор SELECT?
where
предложение для внешнего запроса?select
без псевдонима.Ответ предоставляется Джо Стефанелли уже правильно.
Нам нужно создать псевдоним подзапроса, потому что для запроса нужен объект таблицы, который мы получим при создании псевдонима для подзапроса. Концептуально результаты подзапроса подставляются во внешний запрос. Поскольку нам нужен табличный объект во внешнем запросе, нам нужно создать псевдоним внутреннего запроса.
Утверждения, которые включают подзапрос, обычно принимают одну из следующих форм:
Проверьте более правил подзапросов и типов подзапросов .
Дополнительные примеры вложенных подзапросов.
IN / NOT IN - этот оператор берет выходные данные внутреннего запроса после выполнения внутреннего запроса, который может иметь ноль или более значений, и отправляет его во внешний запрос. Затем внешний запрос извлекает все соответствующие строки [оператор IN] или несовпадающие строки [оператор NOT IN].
ЛЮБОЙ - [> ЛЮБОЙ или ЛЮБОЙ оператор берет список значений, созданных внутренним запросом, и извлекает все значения, которые превышают минимальное значение списка.
Например,> ЛЮБОЙ (100, 200, 300), оператор ЛЮБЫЙ извлечет все значения больше 100.
Например,> ALL (100,200,300), оператор ALL извлечет все значения, превышающие 300.
источник