Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL den Fehler „#1054 – Unbekannte Spalte' aus, wenn Spaltenaliase in WHERE-Klauseln verwendet werden?

Warum gibt MySQL den Fehler „#1054 – Unbekannte Spalte' aus, wenn Spaltenaliase in WHERE-Klauseln verwendet werden?

Susan Sarandon
Susan SarandonOriginal
2025-01-22 08:27:09283Durchsuche

Why Does MySQL Throw a

MySQL WHERE-Klausel und Spaltenaliase: Fehlerbehebung für den Fehler „#1054 – Unbekannte Spalte“

MySQL-Abfragen erzeugen manchmal den Fehler „#1054 – Unbekannte Spalte ‚guaranteed_postcode‘ in ‚IN/ALL/ANY subquery‘“, wenn Spaltenaliase innerhalb der WHERE-Klausel verwendet werden. Dies liegt daran, dass Standard-SQL die Verwendung von Aliasen in der WHERE-Klausel aufgrund möglicher Inkonsistenzen bei der Bestimmung des Spaltenwerts während der Ausführung verhindert. Die Datenbank hat dem Alias ​​bei der Verarbeitung der WHERE-Klausel noch keine Werte zugewiesen.

Im MySQL-Handbuch heißt es eindeutig, dass Aliase nur in GROUP BY-, ORDER BY- oder HAVING-Klauseln gültig sind. Diese Klauseln gelten nach dem Datenabruf und garantieren die Alias-Verfügbarkeit.

Ihre Abfrage verwendet wahrscheinlich den Alias ​​SUBSTRING(locations.raw,-6,4) als guaranteed_postcode in der WHERE-Klausel. Da MySQL auf den Alias ​​stößt, bevor der Spaltenwert berechnet wird, wird der Fehler generiert.

Um dies zu korrigieren, verwenden Sie die HAVING-Klausel (für Aggregatfunktionen oder Berechnungen) oder eine Unterabfrage innerhalb der WHERE-Klausel. Die Unterabfrage vermeidet die direkte Verwendung des Alias ​​in der WHERE-Klausel der Hauptabfrage und sorgt so für die erforderliche Filterung, ohne die MySQL-Regeln zu verletzen.

Das obige ist der detaillierte Inhalt vonWarum gibt MySQL den Fehler „#1054 – Unbekannte Spalte' aus, wenn Spaltenaliase in WHERE-Klauseln verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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