Der Einfachheit halber nehmen wir an, dass alle relevanten Felder NOT NULL
.
Das können Sie tun:
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1, table2
WHERE
table1.foreignkey = table2.primarykey
AND (some other conditions)
Oder aber:
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1 INNER JOIN table2
ON table1.foreignkey = table2.primarykey
WHERE
(some other conditions)
Funktionieren diese beiden auf dieselbe Weise in MySQL
?
2 Stimmen
@Marco: hier ist es
2 Stimmen
Mögliche Duplikate von SQL left join vs. mehrere Tabellen in der FROM-Zeile?
32 Stimmen
Wenn ich es richtig verstanden habe, handelt es sich bei der ersten Variante um die implizite ANSI-SQL-89-Syntax und bei der zweiten Variante um die explizite ANSI-SQL-92-Join-Syntax. Beide führen in konformen SQL-Implementierungen zum gleichen Ergebnis und beide führen in gut gemachten SQL-Implementierungen zum gleichen Abfrageplan. Ich persönlich bevorzuge die SQL-89-Syntax, aber viele Leute bevorzugen die SQL-92-Syntax.
12 Stimmen
@Hogan Ich habe nur auf die offiziellen Bezeichnungen für die verschiedenen Syntaxen hingewiesen. Da in keiner der Antworten die vollständigen Namen genannt wurden, habe ich beschlossen, diese als Kommentar hinzuzufügen. Da mein Kommentar jedoch nicht die eigentliche Frage beantwortet, habe ich ihn als Kommentar und nicht als Antwort hinzugefügt. (In den Antworten mit hoher Stimmenzahl werden Behauptungen aufgestellt wie "INNER JOIN ist ANSI-Syntax" und "implicit join ANSI syntax is older", was überhaupt nichts aussagt, da beide Syntaxen unterschiedliche ANSI-Syntaxen sind).