Es gibt keinen wirklichen Unterschied, sie bei der Ausführung, aber es gibt eine Lesbarkeit, Konsistenz und Fehler milderndes Problem bei der Arbeit:
Stellen Sie 4 Tische hatten Wenn Sie auf die altmodische Art und Weise zu tun, ein INNER JOIN verwendet wird, werden Sie am Ende würden:
SELECT col1, col2
FROM tab1, tab2, tab3,tab4
WHERE tab1.id=tab2.tab1_id
AND tab4.id = tab2.tab3_id
AND tab4.id = tab3.tab4_id;
explizite INNER Joins es wäre:
SELECT col1, col2
FROM tab1
INNER JOIN tab2 ON tab1.id = tab2.tab1_id
INNER JOIN tab3 ON tab3.id = tab2.tab3_id
INNER JOIN tab4 ON tab4.id = tab3.tab4_id;
Letztere Sie direkt vor dem Tisch zeigt genau das, was es mit beitritt. Es hat die Lesbarkeit verbessert und weniger fehleranfällig, da es schwieriger ist, die ON-Klausel zu vergessen, als ein weiteres AND in WHERE hinzuzufügen oder eine falsche Bedingung hinzuzufügen (wie in der obigen Abfrage :).
Darüber hinaus, wenn Sie andere Arten von JOINS tun, verwenden Sie die explizite Möglichkeit, sie zu schreiben, müssen Sie nur die INNER zu etwas anderem ändern, und der Code ist konsequent konstruiert.
"Comma Joins" wie diese sind alte Code und nicht garantiert weiterhin unterstützt werden. Es ist auch weniger lesbar und flexibel. Insgesamt wird es nicht empfohlen, zu verwenden. Es ist einfach, die WHERE-Klausel falsch zu bekommen und somit weit mehr Zeilen als erwartet zu erhalten. – Tobberoth
SQL Ansi-Konsortium versucht, diese impliziten Joins (Komma) seit Jahrzehnten loszuwerden. Aber es gibt viele Legacy-Systeme und viele Legacy-Programmierer und das wird wahrscheinlich nicht passieren. Gehen Sie mit den expliziten Joins, es lässt den Code viel klarer. – jean