Von MySQL documentation page
Zuvor hatte die Komma-Operator (,) und JOIN hatten beide die gleiche Priorität, so der Ausdruck t1 verbinden, t2 JOIN t3 wurde interpretiert als ((T1, T2) JOIN t3). Jetzt hat JOIN eine höhere Priorität, daher wird der Ausdruck interpretiert als (t1, (t2 JOIN t3)). Diese Änderung wirkt sich auf Anweisungen aus, die eine ON-Klausel verwenden, da sich diese Klausel nur auf Spalten in den Operanden des Joins beziehen kann, und die Änderung der Priorität ändert die Interpretation dessen, was diese Operanden sind.
Beispiel:
CREATE TABLE t1 (i1 INT, j1 INT);
CREATE TABLE t2 (i2 INT, j2 INT);
CREATE TABLE t3 (i3 INT, j3 INT);
SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);
Zuvor war die SELECT Recht aufgrund der impliziten Gruppierung von T1, T2 als (T1, T2). Jetzt hat der JOIN Vorrang, also sind die Operanden für die ON-Klausel t2 und t3. Da t1.i1 keine Spalte in einem der Operanden ist, ist das Ergebnis eine unbekannte Spalte 't1.i1' in 'on clause' Fehler. Damit die Verbindung verarbeitet werden, gruppieren Sie die ersten beiden Tabellen explizit mit Klammern, so dass die Operanden für die ON-Klausel sind (T1, T2) und t3:
SELECT * FROM (t1, t2) JOIN t3 ON (t1.i1 = t3.i3);
Alternativ vermeiden die Verwendung des Komma-Operator und stattdessen verwenden JOIN:
SELECT * FROM t1 JOIN t2 JOIN t3 ON (t1.i1 = t3.i3);
Diese Änderung gilt auch für Anweisungen, die den Komma-Operator mit INNER JOIN mischen, CROSS JOIN LEFT JOIN und RIGHT JOIN, von denen alle jetzt eine höhere Priorität als der Komma-Operator haben.
Durch Zitate, tun Sie Klammern bedeuten? In der ersten Abfrage verstehe ich deine Erklärung nicht. Auf welche Klausel beziehen Sie sich? Kannst du es neu formulieren? Vielen Dank – Neil