Heim > Datenbank > MySQL-Tutorial > Warum gibt MySQL beim Mischen von Join-Syntaxen den Fehler „Unbekannte Spalte in ON-Klausel' aus?

Warum gibt MySQL beim Mischen von Join-Syntaxen den Fehler „Unbekannte Spalte in ON-Klausel' aus?

Mary-Kate Olsen
Freigeben: 2025-01-13 06:48:42
Original
886 Leute haben es durchsucht

Why Does MySQL Throw an

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

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!

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