Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL den Fehler „#1054 – Unbekannte Spalte' aus, wenn Spaltenaliase in WHERE-Klauseln verwendet werden?
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!