MySQL документация обхваща тази тема.
Ето синопсис. Когато използвате join или inner join , on условието е по избор. Това е различно от стандарта ANSI и различно от почти всяка друга база данни. Ефектът е cross join . По същия начин можете да използвате on клауза с cross join , което също се различава от стандартния SQL.
Кръстосаното свързване създава декартов продукт - тоест всяка възможна комбинация от 1 ред от първата таблица и 1 ред от втората. Кръстосаното съединение за таблица с три реда („a“, „b“ и „c“) и таблица с четири реда (да речем 1, 2, 3, 4) ще има 12 реда.
На практика, ако искате да направите кръстосано присъединяване, тогава използвайте cross join :
from A cross join B
е много по-добре от:
from A, B
и:
from A join B -- with no on clause
on Клаузата е необходима за дясно или ляво външно присъединяване, така че дискусията не е от значение за тях.
Ако трябва да разберете различните типове съединения, тогава трябва да изучите релационни бази данни. Stackoverflow не е подходящо място за това ниво на дискусия.