Kromě syntaxe pro malý úryvek fungují úplně stejně. Ale pokud je to možné, vždy pište nové dotazy pomocí ANSI-JOINů.
Pokud jde o sémantiku, čárková notace se používá k vytvoření KARTÉZSKÉHO součinu mezi dvěma tabulkami, což znamená vytvoření matice všech záznamů z tabulky A se všemi záznamy z tabulky B, takže dvě tabulky se 4 a 6 záznamy vygenerují 24 záznamů. Pomocí klauzule WHERE pak můžete vybrat řádky, které skutečně chcete z tohoto kartézského součinu. MySQL však tuto obrovskou matici ve skutečnosti nesleduje a nevytváří, ale sémanticky to znamená toto.
Syntaxe JOIN je standard ANSI, který jasněji definuje, jak tabulky interagují. Zapnutím ON
klauzule vedle JOIN
, je jasné, co spojuje obě tabulky dohromady.
Funkčně provedou totéž pro vaše dva dotazy. Rozdíl nastane, když začnete používat jiné [OUTER]
Typy JOIN.
Konkrétně pro MySQL má zápis čárkou jeden rozdíl
STRAIGHT_JOIN je podobný JOIN, kromě toho, že levá tabulka je vždy čtena před pravou tabulkou. To lze použít v těch (několika) případech, kdy optimalizátor spojení umístí tabulky do nesprávného pořadí.
Nicméně by to nebylo moudré spolehněte se na tento rozdíl.