Förutom syntax, för det lilla utdraget, fungerar de exakt likadant. Men om det är möjligt, skriv alltid nya frågor med ANSI-JOINs.
När det gäller semantiskt används kommanotationen för att producera en CARTESIAN-produkt mellan två tabeller, vilket innebär att producera en matris av alla poster från tabell A med alla poster från tabell B, så två tabeller med 4 respektive 6 poster ger 24 poster. Med hjälp av WHERE-satsen kan du sedan välja de rader du faktiskt vill ha från denna kartesiska produkt. Men MySQL följer faktiskt inte igenom och gör denna enorma matris, men semantiskt är det vad det betyder.
En JOIN-syntax är ANSI-standarden som tydligare definierar hur tabeller interagerar. Genom att sätta ON
satsen bredvid JOIN
, gör det tydligt vad som länkar de två tabellerna samman.
Funktionellt kommer de att fungera på samma sätt för dina två frågor. Skillnaden kommer in när du börjar använda annan [OUTER]
JOIN-typer.
Specifikt för MySQL har kommatecken en skillnad
STRAIGHT_JOIN liknar JOIN, förutom att den vänstra tabellen alltid läses före den högra tabellen. Detta kan användas för de (få) fall där join-optimeraren placerar tabellerna i fel ordning.
Det vore dock inte klokt att satsa på denna skillnad.