Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL beim Mischen von Join-Syntaxen den Fehler „Unbekannte Spalte in ON-Klausel' aus?
MySQL-Fehler „Unbekannte Spalte“: Verständnis von Join-Syntaxkonflikten
Der MySQL-Fehler „Unbekannte Spalte ‚p.id‘ in ‚on-Klausel‘“ entsteht häufig durch die inkonsistente Verwendung der Join-Syntax. Diese Mehrdeutigkeit ergibt sich aus den Unterschieden zwischen ANSI-89- und ANSI-92-Join-Stilen.
ANSI-89 verwendet Kommas, um Verknüpfungen zu definieren, während ANSI-92 das explizite Schlüsselwort JOIN
verwendet. Das Mischen dieser Stile führt zu Analysefehlern. Die ursprüngliche Abfrage kombinierte beide falsch, was dazu führte, dass MySQL zuerst die ANSI-92-Joins interpretierte. Folglich wurde die Tabelle „p“ nicht erkannt, als sie im ANSI-89-Teil der Join-Bedingung referenziert wurde.
Die Lösung besteht darin, die Konsistenz aufrechtzuerhalten. Durch die durchgehende Verwendung der ANSI-92-Syntax werden Prioritätsprobleme beseitigt und die Lesbarkeit der Abfrage verbessert.
Hier ist die korrigierte Abfrage mit konsistenter ANSI-92-Syntax:
<code class="language-sql">SELECT p.*, IF(COUNT(ms.PropertyID) > 0,1,0) AS Contacted, pm.MediaID, DATE_FORMAT(p.AvailableFrom, '%d %b %Y') AS AvailableFrom, AsText(pg.Geometry) AS Geometry FROM property p JOIN propertygeometry pg ON p.PropertyGeometryID = pg.id JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216 LEFT JOIN message ms ON ms.PropertyID = p.id AND ms.SenderID = 384216 LEFT JOIN property_media pm ON pm.PropertyID = p.id AND pm.IsPrimary = 1 WHERE p.paused = 0 GROUP BY p.id</code>
Dieser Ansatz gewährleistet eine reibungslose Abfrageausführung, indem er Syntaxkonflikte vermeidet. Verwenden Sie aus Gründen der Klarheit und Fehlervermeidung immer das explizite Schlüsselwort JOIN
.
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL beim Mischen von Join-Syntaxen den Fehler „Unbekannte Spalte in ON-Klausel' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!