Heim > Datenbank > MySQL-Tutorial > Warum führt das Mischen von ANSI-JOINs und durch Kommas getrennten Tabellen in MySQL zu „Unbekannte Spalten'-Fehlern?

Warum führt das Mischen von ANSI-JOINs und durch Kommas getrennten Tabellen in MySQL zu „Unbekannte Spalten'-Fehlern?

Linda Hamilton
Freigeben: 2025-01-09 10:57:41
Original
496 Leute haben es durchsucht

Why Does Mixing ANSI JOINs and Comma-Separated Tables in MySQL Lead to

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage