Задать вопрос
@wideShift

Зачем нужен INNER JOIN в MySQL?

JOIN, он же INNER JOIN в MySQL работает как CROSS JOIN, т.е также
select c.id, p.name from customers c, products p where c.product.id = p.id


Из-за того, что ON условие не обязательно сначала декартово произведение выполняется, а потом условие в ON отсеивает ненужное.
  • Вопрос задан
  • 233 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@galaxy
В mysql, как написал Rsa97, варианты эквивалентны. В стандарте SQL (и многих других СУБД) это не так.
CROSS JOIN - используется без условия ON и действительно выполняет декартово произведение (так же работает запятая).
INNER JOIN требует ON.

Из-за того, что ON условие не обязательно сначала декартово произведение выполняется, а потом условие в ON отсеивает ненужное.

Стоит запомнить, что SQL - язык декларативный (а не императивный). SQL запрос определяет, что надо сделать, а не как. Поэтому хотя и можно представлять себе работу его так, как вы описали, но в реальности почти всегда соединение будет происходить иначе и более оптимально (почитайте про nested loops, merge join, hash join и т.д.).
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
JOIN, INNER JOIN и CROSS JOIN в случае MySQL синтаксически эквивалентны
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы