В чем разница между CROSS JOIN и INNER JOIN

«В чем разница между CROSS JOIN и INNER JOIN» — вопрос из категории SQL, который задают на 27% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

CROSS JOIN создает декартово произведение таблиц — каждая строка первой таблицы соединяется с каждой строкой второй. Результат содержит все возможные комбинации строк без условий.

SELECT * FROM TableA CROSS JOIN TableB;

INNER JOIN соединяет строки только при выполнении условия (ON или WHERE). Если условие не выполняется, строки исключаются из результата.

SELECT * FROM TableA INNER JOIN TableB ON TableA.id = TableB.id;

Ключевые отличия:

  • CROSS JOIN не требует условия и возвращает все комбинации
  • INNER JOIN фильтрует результат по условию соединения
  • Если в INNER JOIN опустить условие, он ведет себя как CROSS JOIN (но это плохая практика)