Probleme bei der Verwendung von gemischten ANSI JOIN- und durch Kommas getrennten Tabellen in MySQL-Abfragen
Beim Mischen der ANSI JOIN-Syntax (INNER JOIN, CROSS JOIN, LEFT JOIN) und durch Kommas getrennten Tabellenverweisen in einer MySQL-Abfrage kann ein Fehler „Unbekannte Spalte“ auftreten. Dieser Fehler tritt auf, weil MySQLs Interpretation des Kommaoperators von seiner Position abhängt.
Frage:
Bedenken Sie die folgende Abfrage:
<code class="language-sql">SELECT m.*, t.* FROM memebers as m, telephone as t INNER JOIN memeberFunctions as mf ON m.id = mf.memeber INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber WHERE mf.function = 32</code>
Diese Abfrage führt zu einem Fehler „Unbekannte Spalte ‚m.id‘ in ‚on-Klausel‘“.
Lösung:
Um diesen Fehler zu beheben, vermeiden Sie die Vermischung der ANSI JOIN-Syntax mit durch Kommas getrennten Tabellen. Verwenden Sie stattdessen nur die ANSI JOIN-Syntax, wie in der geänderten Abfrage unten gezeigt:
<code class="language-sql">SELECT m.*, t.* FROM memebers as m JOIN telephone as t ON 1=1 INNER JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32 INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber</code>
Erklärung:
MySQL interpretiert die Abfrage nun als:
<code class="language-sql">((memembers as m JOIN telephone as t ON 1=1) INNER JOIN memeberFunctions as mf ON m.id = mf.memeber) INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber</code>
In dieser Syntax sind die Operanden der JOIN-Klausel klar definiert und die Spalte „m.id“ wird in der ON-Klausel korrekt referenziert. ON 1=1
wird hinzugefügt, um die Korrektheit der JOIN
-Operation sicherzustellen, da das Schlüsselwort JOIN
die ON
-Klausel erfordert.
Hinweis:
Es ist wichtig zu beachten, dass die Verwendung von Kommas zum Trennen von Tabellen in MySQL nicht mehr als bewährte Methode gilt. Es wird empfohlen, die ANSI JOIN-Syntax zu verwenden, um Klarheit zu gewährleisten und potenzielle Fehler zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum führt das Mischen von ANSI-JOINs und durch Kommas getrennten Tabellen in MySQL zu „Unbekannte Spalten'-Fehlern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!