Probleme, die durch die Vermischung von ANSI 1992 JOIN und Kommas in MySQL-Abfragen verursacht werden
Wenn Sie in einer MySQL-Abfrage sowohl die ANSI 1992 JOIN-Syntax als auch die durch Kommas getrennte Tabellen-Join-Syntax verwenden, kann der Fehler „Unbekannte Spalte „m.id“ in „on-Klausel““ auftreten. Dies liegt daran, dass das Mischen der beiden Syntaxen zu Mehrdeutigkeiten in der Abfragesyntax führen kann.
Problemlösung
Laut der MySQL-Dokumentation wird das Mischen der kommabasierten Tabellenverknüpfungssyntax (z. B. members as m, telephone as t
) mit expliziten JOIN-Klauseln nicht empfohlen. Um dies zu beheben, ersetzen Sie die Kommas durch CROSS/INNER/LEFT JOIN
-Anweisungen.
Erläuterung der Gründe
Früher hatten der Kommaoperator und JOIN die gleiche Priorität, aber in neueren MySQL-Versionen hat JOIN eine höhere Priorität. Daher hat der Kommaoperator nicht mehr Vorrang vor JOIN-Klauseln. Dies bedeutet, dass der Abfrageinterpreter die Operanden falsch trennt, was zu Fehlern in der ON-Klausel führt.
Geänderte Abfrage
Um die Syntax zu korrigieren, schreiben Sie die Abfrage mit einer expliziten JOIN-Klausel neu:
<code class="language-sql">SELECT m.*, t.* FROM memebers AS m JOIN telephone AS t ON m.id = t.member_id -- 添加连接条件 JOIN memeberFunctions AS mf ON m.id = mf.memeber AND mf.function = 32 JOIN mitgliedTelephone AS mt ON m.id = mt.memeber;</code>
Andere Hinweise
Beachten Sie, dass die geänderte Abfrage einen Cross-Join zwischen m
und t
voraussetzt, da Sie keine Kriterien angegeben haben. Bei Bedarf müssen Sie die Abfrage möglicherweise ändern, um entsprechende Join-Bedingungen einzubeziehen. Ich habe als Beispiel eine hypothetische Join-Bedingung ON m.id = t.member_id
hinzugefügt. Sie müssen diese Bedingung basierend auf Ihrer tatsächlichen Datenbanktabellenstruktur ändern.
Das obige ist der detaillierte Inhalt vonWarum führt das Mischen von ANSI 1992 JOINs und Kommas in MySQL-Abfragen zu „Unbekannte Spalte'-Fehlern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!