Является ли слово «AS» в предложении mysql FROM необязательным?

#mysql #syntax

#mysql — сервер #синтаксис #mysql

Вопрос:

Я наткнулся на интересный (для меня) запрос, и я не совсем уверен, что он делает.

 SELECT SQL_CALC_FOUND_ROWS DISTINCT P.* FROM table P WHERE P.status = ...
  

Вопрос в том, что касается P конкретно FROM table P . Я знаю, что в FROM предложении вы можете использовать AS предложение, но этот конкретный запрос этого не делает. Является ли это слово AS необязательным?

Ответ №1:

Определение псевдонимов не всегда является необязательным, но когда вы определяете псевдоним, ключевое слово AS всегда является необязательным.

 table_factor:
    tbl_name [PARTITION (partition_names)] 
        [[AS] alias] [index_hint_list]
  | table_subquery [AS] alias
  | ( table_references )
  | { OJ table_reference LEFT OUTER JOIN table_reference
        ON conditional_expr }
  

Источник: Синтаксис ОБЪЕДИНЕНИЯ

AS Ключевое слово также необязательно при определении псевдонимов столбцов:

Ключевое слово AS является необязательным при объединении select_expr с идентификатором

Источник: ВЫБЕРИТЕ синтаксис

Ответ №2:

В этой ситуации это не требуется, но существуют другие ситуации, такие как объединение производных таблиц, где это требуется.

Ответ №3:

Исторически поддержка была немного неоднозначной, но теперь это стандарт, который поддерживают все, и он необходим для разрешения конфликта имен (выбирается несколько таблиц с одинаковыми именованными полями). Это также действительно здорово для присвоения псевдонима составным / вычисляемым / виртуальным полям!

В конце концов, это «обязательно», если в противном случае оно было бы однозначным.

Комментарии:

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