#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
.