Есть ли недостаток в использовании «ИСПОЛЬЗОВАНИЕ» вместо «ON» в MySQL? - PullRequest
2 голосов
/ 21 ноября 2008

Два фрагмента MySQL:

SELECT * FROM annoyingly_long_left_hand_table 
    LEFT JOIN annoyingly_long_right_hand_table 
    ON annoyingly_long_left_hand_table.id = annoyingly_long_right_hand_table.id;

против

SELECT * FROM annoyingly_long_left_hand_table 
    LEFT JOIN annoyingly_long_right_hand_table 
    USING (id);

Учитывая, что в обеих таблицах есть поле id, есть ли недостатки в использовании второй версии. Это не просто лень - версия с USING кажется мне намного понятнее.

(Пожалуйста, не упоминайте псевдонимы - я хочу знать, есть ли причина отдавать предпочтение одной условной структуре над другой)

Ответы [ 2 ]

6 голосов
/ 21 ноября 2008

Существует небольшое функциональное различие между ними в том, что вместо получения 2 столбцов идентификаторов вы получаете только один.

ВЫБРАТЬ * ОТ foo JOIN bar ON (foo.id == bar.id)

id, имя пользователя, id, barname

ВЫБРАТЬ * ИЗ ИСПОЛЬЗОВАНИЯ бара foo JOIN (id)

id, fooname, barname

Таким образом, для пользователей, использующих этот синтаксис, есть, по крайней мере, некоторые дополнительные требования к знаниям: http://dev.mysql.com/doc/refman/5.0/en/join.html

1 голос
/ 29 сентября 2009

USING немного менее гибок, чем предложение общего назначения ON:

  • Столбцы в обеих таблицах должны иметь одинаковые имена.

  • Сравнение должно быть равенством.

  • Ни одна другая таблица в запросе не может иметь столбец с таким же именем.

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