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 не е подходящо място за това ниво на дискусия.