Heim > Datenbank > MySQL-Tutorial > Warum wirft MySQL beim Mischen von Join-Stilen „Unbekannte Spalte in ON-Klausel' aus?

Warum wirft MySQL beim Mischen von Join-Stilen „Unbekannte Spalte in ON-Klausel' aus?

Susan Sarandon
Freigeben: 2025-01-13 06:43:43
Original
751 Leute haben es durchsucht

Why Does MySQL Throw

MySQL-Fehler „Unbekannte Spalte in ON-Klausel“: Detaillierte Erläuterung der Verwirrung in der Verbindungsreihenfolge

Wenn in MySQL der Fehler „#1054 – Unbekannte Spalte ‚p.id‘ in ‚on-Klausel‘“ auftritt, ist es wichtig, die potenziellen Probleme zu verstehen, die sich aus der Vermischung von ANSI-89- und ANSI-92-Style-Joins in der Abfrage ergeben. Standardmäßig bewertet MySQL Verbindungen anhand ihrer Priorität, was zu Verwirrung führen kann, wenn die Verbindungsreihenfolge nicht explizit angegeben wird.

Bei einer falschen Abfrage interpretiert MySQL die Abfrage wie folgt, wobei Verknüpfungen im Komma-Stil nach dem JOIN-Schlüsselwort Join ausgewertet werden:

<code class="language-sql">FROM property p, (
    propertygeometry pg
    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216
    ...
)</code>
Nach dem Login kopieren

Zu diesem Zeitpunkt geht MySQL davon aus, dass die Tabelle „p“ nicht deklariert wurde, was zu einem Fehler „Unbekannte Spalte“ führt.

Um diese Verwirrung zu vermeiden, wird empfohlen, in der gesamten Abfrage immer Verknüpfungen im ANSI-92-Stil zu verwenden, d. h. das JOIN-Schlüsselwort zu verwenden:

<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

Mit diesem Ansatz ist die Verbindungsreihenfolge klar und verwirrende Fehlermeldungen werden vermieden.

Das obige ist der detaillierte Inhalt vonWarum wirft MySQL beim Mischen von Join-Stilen „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