Poza składnią w przypadku małego fragmentu działają dokładnie tak samo. Ale jeśli to w ogóle możliwe, zawsze pisz nowe zapytania za pomocą ANSI-JOIN.
Jeśli chodzi o semantykę, to notacja przecinkowa jest używana do utworzenia iloczynu KARTEZJAŃSKIEGO między dwiema tabelami, co oznacza utworzenie macierzy wszystkich rekordów z tabeli A ze wszystkimi rekordami z tabeli B, więc dwie tabele z odpowiednio 4 i 6 rekordami dają 24 rekordy. Korzystając z klauzuli WHERE, możesz następnie wybrać żądane wiersze z tego produktu kartezjańskiego. Jednak MySQL w rzeczywistości nie podąża i nie tworzy tej ogromnej macierzy, ale semantycznie to właśnie oznacza.
Składnia JOIN to standard ANSI, który bardziej przejrzyście definiuje sposób interakcji tabel. Wstawiając ON
klauzula obok JOIN
, wyjaśnia, co łączy te dwie tabele.
Funkcjonalnie wykonają to samo dla twoich dwóch zapytań. Różnica pojawia się, gdy zaczniesz używać innych [OUTER]
Typy JOIN.
W szczególności w przypadku MySQL notacja przecinkowa ma jedną różnicę
STRAIGHT_JOIN jest podobny do JOIN, z tą różnicą, że lewa tabela jest zawsze czytana przed prawą. Można to wykorzystać w tych (nielicznych) przypadkach, w których optymalizator złączeń ustawia tabele w złej kolejności.
Jednak nie byłoby mądre liczyć na tę różnicę.