MySQL JOIN за кадром - PullRequest
       3

MySQL JOIN за кадром

0 голосов
/ 20 апреля 2011

Я помню, как где-то читал / мне говорили / выдумывали слух (^_^), что два следующих запроса одинаково закулисны на серверах MySQL:

SELECT *
FROM a
JOIN b
ON a.id = b.id

и

SELECT *
FROM a, b
WHERE a.id = b.id

Это правда?Если так, то один лучше, чем альтернатива в других терминах?(например, эффективность разбора или соответствие стандарту)

Ответы [ 2 ]

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

Это на самом деле правда. Первый запрос соответствует стандарту SQL-89, а второй - SQL-92.

Стандарт SQL-92 ввел INNER JOIN .. ON и OUTER JOIN .. ON, чтобы заменить более сложный (?) Синтаксис SQL-89.

Внешнее объединение в SQL-89 будет:

SELECT ...
FROM t1, t2
WHERE t1.id *= t2.id

где в SQL-92 это будет

FROM t1 OUTER JOIN t2 ON t1.id = t2.id

Я долгое время предпочитал SQL-89 вместо SQL-92, но думаю, что совместимость с SQL Server 2008 убрала поддержку синтаксиса соединения SQL-89.

0 голосов
/ 20 апреля 2011

Да, они идентичны. Но это не что-то особенное для Mysql - это просто разные стили объединения. Тот, что вы написали сверху, новее и предпочтительнее

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