MySQL: что означает «г»? - PullRequest
       2

MySQL: что означает «г»?

4 голосов
/ 05 апреля 2011

Я просматривал некоторый код и неоднократно видел букву 'r' в запросах, и никогда раньше не видел ее.Я не гуру MySQL и не могу найти в Интернете ссылки, которые действительно имеют смысл в этом случае.

Пример запроса:

SELECT * FROM database.table r
WHERE column = 'whatever'
AND otherColumn = 'whenever'
ORDER BY id, name

Ответы [ 5 ]

8 голосов
/ 05 апреля 2011

Это на самом деле означает, что таблица переименовывается из ее длинной формы в букву / символ 'r'.

Это красная сельдь в вашем случае, потому что 'r' неиспользуется в любом месте запроса, и это не должно быть.Ваш запрос не является хорошим примером использования псевдонимов, потому что используется только одна таблица.Если вы объединяете несколько таблиц, псевдонимы становятся удобными (хотя и не обязательными) для указания столбца таблицы, на который вы ссылаетесь в различных предложениях вашего запроса.

Вы можете просто удалить 'r' и выполнить свой запрос.

SELECT * FROM database.table r
WHERE column = 'whatever'
AND otherColumn = 'whenever'
ORDER BY id, name

Или используйте это прямо как: (хотя это избыточно здесь)

SELECT * FROM database.table r
WHERE r.column = 'whatever'
AND r.otherColumn = 'whenever'
ORDER BY r.id, r.name

Кстати, код SQL, как это, является причиной, почему я склонен использовать ключевое слово AS, чтобы подчеркнуть тот факт, что яалиасинг.Таким образом, предложение FROM будет выглядеть так: FROM database.table AS r

Что касается того, что делает этот неиспользуемый псевдоним, то это хороший вопрос.Я предполагаю, что его вырезали, копировали и вставляли из какого-то старого запроса, который использовал псевдоним, но никто никогда не удосужился удалить его, когда он стал ненужным.

4 голосов
/ 05 апреля 2011

Это псевдоним. Это означает: мы должны использовать r сейчас вместо database.table.

Мы можем использовать r.column, но нам по-прежнему разрешается использовать только column, если нет двусмысленности.

SELECT * FROM database.table r
WHERE r.column = 'whatever'         --using the alias r
AND otherColumn = 'whenever'        --not using it
ORDER BY id, r.name                 --mixing
4 голосов
/ 05 апреля 2011

Это псевдоним таблицы.Если вы объединяете две таблицы с дублированными именами столбцов, вы можете устранить неоднозначность запроса, сказав some_table.id, а псевдоним таблицы позволяет просто набрать r.id.

4 голосов
/ 05 апреля 2011

r - это псевдоним, который вы можете присвоить таблице. Позже этот псевдоним может ссылаться на столбцы таблицы, например r.column1

1 голос
/ 05 апреля 2011

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

Соответствующий синтаксис для table_reference указан в документации MySQL как tbl_name [[AS] alias] [index_hint_list].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...