Heim >Datenbank >MySQL-Tutorial >Warum gibt meine SQL-Abfrage „Unbekannte Spalte in der Where-Klausel' zurück?
Verstehen des SQL-Fehlers „Unbekannte Spalte in der Where-Klausel“
Der gefürchtete Fehler „Unbekannte Spalte in der Where-Klausel“ entsteht durch die spezifische Ausführungsreihenfolge innerhalb von SQL-Anweisungen. SQL verarbeitet Abfragen von rechts nach links, was bedeutet, dass die WHERE
-Klausel vor der SELECT
-Klausel ausgewertet wird.
Lassen Sie es uns anhand eines Beispiels veranschaulichen:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE user_name = "john";</code>
Hier versucht die WHERE
-Klausel, mithilfe von user_name
zu filtern. Der Alias user_name
ist jedoch nur in der SELECT
-Klausel definiert. Da die WHERE
-Klausel zuerst verarbeitet wird, ist dieser Alias noch nicht aufgetreten, was zum Fehler „Unbekannte Spalte“ führt.
Lösungen:
Es gibt zwei einfache Möglichkeiten, dieses Problem zu beheben:
Verwenden Sie den ursprünglichen Spaltennamen in der WHERE
-Klausel: Dies ist die einfachste und effizienteste Lösung. Verweisen Sie auf die Spalte mit ihrem tatsächlichen Namen, nicht mit dem Alias:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
Schließen Sie die Alias-Spalte in Klammern ein: Dieser Ansatz zwingt die Datenbank dazu, den Alias vor der WHERE
-Klausel auszuwerten. Obwohl es funktionsfähig ist, ist es im Allgemeinen weniger effizient als die Verwendung des ursprünglichen Spaltennamens:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE (user_name = "john");</code>
Wenn Sie die Auswertungsreihenfolge von SQL verstehen und eine dieser Lösungen anwenden, können Sie den Fehler „Unbekannte Spalte in der Where-Klausel“ effektiv beheben.
Das obige ist der detaillierte Inhalt vonWarum gibt meine SQL-Abfrage „Unbekannte Spalte in der Where-Klausel' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!