Heim > Datenbank > MySQL-Tutorial > Warum führt das Mischen von ANSI 1992 JOINs und Kommas in MySQL-Abfragen zu „Unbekannte Spalte'-Fehlern?

Warum führt das Mischen von ANSI 1992 JOINs und Kommas in MySQL-Abfragen zu „Unbekannte Spalte'-Fehlern?

Linda Hamilton
Freigeben: 2025-01-09 11:06:41
Original
754 Leute haben es durchsucht

Why Does Mixing ANSI 1992 JOINs and Commas in MySQL Queries Cause

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

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!

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