2016-12-07 4 views
2

Я видел эту тему:Почему я должен поставить предложение «AS» в конце подзапроса?

SELECT 
    MAX(totalcontracts) AS highest_total 
FROM (SELECT 
     SuperVisor        
     ,COUNT(ContractNo) AS totalcontracts  
     FROM Contract          
     GROUP BY SuperVisor        
    ) AS t 

Если удалить «как т» линии, которые возвращают меня об ошибке. но когда я верну это, работа прекрасна. Это временно, так почему мне нужно помещать имя в эту подтаблицу? В этом смысле есть смысл? Спасибо.

+1

Поскольку для любого вложенного подзапроса необходим псевдоним, чтобы получить данные от него. –

+1

Какая система баз данных вы используете? В SQL Server вам нужно указать системе имя подзапроса. Вам необязательно иметь «AS», это может быть просто «) t», но его нужно назвать. –

+0

Эта часть 'AS table-alias' является необязательной в соответствии со стандартом SQL ANSI/ISO. Однако некоторые продукты требуют этого. – jarlh

ответ

2

В стандартном SQL производной таблицы (подзапрос Вы выбираете данные) требуется имя:

FROM (<subquery>) [AS] <name>` 

(Некоторые СУБД, однако, не соответствуют стандарту. В Oracle, например, необязательно давать производной таблице псевдоним, но необязательный AS запрещается указывать. Другие СУБД, с другой стороны, могут потребовать AS, хотя стандарт SQL указывает его как необязательный.)

0

Как упоминалось в @jarlh, если вы используете некоторые системы баз данных, чтобы использовать результат из любого вложенного подзапроса, вам нужно дать этому результирующему набору имя (или псевдоним), поэтому вам нужно поставить имя/символ/символ после закрытия скобки.

Ключевое слово AS не является обязательным, но его имя есть.

+1

Если вы используете некоторые dbms-продукты ... (необязательно в соответствии со стандартом SQL.) – jarlh

0

Нет, здесь не существует реальной логической необходимости.
Oracle для экземпляра не заставит его

select * from (select * from dual); 

Нор SQLite

select * from (select 1) 
+0

Все еще не проблема, если столбец неоднозначен. Во всяком случае, я не сказал, что это никогда не нужно, однако это определенно не всегда необходимо, как в примере OP. –

 Смежные вопросы

  • Нет связанных вопросов^_^