MySQL. В чем отличие INNER от CROSS JOIN?

Здравствуйте.
Не могу разобраться с JOIN'ами.
В чем отличие этих двух запросов?

EXPLAIN SELECT * 
FROM data 
INNER JOIN data1 d1
ON data.id = d1.city_id

от

EXPLAIN SELECT * 
FROM data 
CROSS JOIN data1 d1
ON data.id = d1.city_id
  • Вопрос задан
  • 19653 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
JOIN, INNER JOIN и CROSS JOIN в случае MySQL синтаксически эквивалентны.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Это Вам должно помочь разобраться: www.codinghorror.com/blog/2007/10/a-visual-explana...
Ответ написан
hbuser
@hbuser Автор вопроса
Ответ сложно накладывается на то, что уже прочитал.
По порядку.
CROSS JOIN - перекрестное соединение. Каждая запись одной таблицы соединяется с каждой записью другой. Все ясно.
INNER JOIN - это разновидность перекрестного соединения (т.е. CROSS JOIN), но с исключенными по условию результатами. Но ведь эти условия можно добавить и к CROSS JOIN, как я это сделал выше и что, он станет называться внутренним?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы