Ich habe eine einfache Frage:
SELECT u_name AS user_name FROM users WHERE user_name = "john";
Ich verstehe Unknown Column 'user_name' in where clause
. Kann ich mich auch danach nicht auf 'user_name'
andere Teile der Erklärung beziehen select 'u_name as user_name'
?
mysql
sql
mysql-error-1054
Btuman
quelle
quelle
Wie wäre es mit:
quelle
HAVING
stattWHERE
in diesem Fall verwenden?Siehe die folgende MySQL-Handbuchseite: http://dev.mysql.com/doc/refman/5.0/de/select.html
(...)
quelle
Stellen Sie sich das so vor: Ihre where-Klausel wird zuerst ausgewertet, um zu bestimmen, welche Zeilen (oder verknüpften Zeilen) zurückgegeben werden müssen. Sobald die where-Klausel ausgeführt wurde, wird die select-Klausel ausgeführt.
Um es besser auszudrücken, stellen Sie sich Folgendes vor:
Sie können die erste Hälfte nicht ohne die zweite referenzieren. Wo immer zuerst ausgewertet wird, dann die select-Klausel.
quelle
Wenn Sie versuchen, eine Abfrage wie die folgende durchzuführen (suchen Sie alle Knoten mit mindestens einem Anhang), bei der Sie eine SELECT-Anweisung verwendet haben, um ein neues Feld zu erstellen, das in der Datenbank nicht vorhanden ist, und versuchen Sie es zu verwenden Der Alias für dieses Ergebnis wird auf dasselbe Problem stoßen:
Sie erhalten die Fehlermeldung "Unbekannte Spalte 'Anhangsanzahl' in WHERE-Klausel".
Die Lösung ist eigentlich ziemlich einfach - ersetzen Sie einfach den Alias durch die Anweisung, die den Alias erzeugt, z.
Der Alias wird weiterhin zurückgegeben, aber jetzt sollte SQL den unbekannten Alias nicht mehr stören.
quelle
(
in Ihrer Anfrage, bevor das(COUNT(*)
nirgendwo geschlossen wird.Ihr definiert
alias
werden nicht durch die begrüßtWHERE
Klausel haben Sie die verwendenHAVING
Klausel für dieseODER Sie können den ursprünglichen Spaltennamen direkt mit dem verwenden
WHERE
Genauso wie Sie das Ergebnis in einem benutzerdefinierten Alias als Ergebnis einer Unterabfrage oder einer Berechnung haben, wird auf die
HAVING
Klausel zugegriffen , nicht auf dieWHERE
quelle
Entweder:
oder:
Letzteres sollte mit Ersterem identisch sein, wenn das RDBMS das Verschieben von Prädikaten in die Inline-Ansicht unterstützt.
quelle
korrigiert:
quelle
Nein, Sie müssen es mit dem richtigen Namen auswählen. Wenn Sie die Tabelle angegeben haben, die Sie aus einem Alias ausgewählt haben, können Sie dies jedoch verwenden.
quelle
Nein, du kannst nicht. Benutzername ist erst nach der Rückgabe vorhanden.
quelle
Unbekannte Spalte in
WHERE
Klausel, verursacht durch die Zeilen 1 und 2 und behoben durch Zeile 3:$sql = "SELECT * FROM users WHERE username =".$userName;
$sql = "SELECT * FROM users WHERE username =".$userName."";
$sql = "SELECT * FROM users WHERE username ='".$userName."'";
quelle
Vielleicht hilft es.
Sie können
Es klappt.
ABER STELLEN SIE SICHER, WAS SIE TUN!
Aber vielleicht hilft es in einigen Fällen
quelle
Während Sie Ihre Tabellen in Ihrer Abfrage aliasen können (dh "SELECT u.username FROM users u;"), müssen Sie die tatsächlichen Namen der Spalten verwenden, auf die Sie verweisen. AS wirkt sich nur darauf aus, wie die Felder zurückgegeben werden.
quelle
quelle
Hatte gerade dieses Problem.
Stellen Sie sicher, dass der Name der Entität in der Datenbank kein Leerzeichen enthält.
zB 'Benutzername' anstelle von 'Benutzername'
quelle
Versuchen Sie Ihre Aufgabe mit der IN- Bedingung oder der OR- Bedingung, und auch diese Abfrage funktioniert mit spark-1.6.x
oder
quelle
Für mich war die Wurzel des Problems eine Zahl, die ich kopiert habe, um sie in einer WHERE-Klausel zu verwenden. Die Nummer hatte ein "unsichtbares" Symbol, zumindest für MySQL Workbench. Ich habe die Nummer in die Chrome-Konsole gestellt, sie war deutlich sichtbar.
quelle
Ich hatte das gleiche Problem, ich fand das nützlich.
Denken Sie daran, $ user in einfache Anführungszeichen zu setzen.
quelle