MySQL: Fehlerbehebung beim Fehler „Unbekannte Spalte“ in der CONCAT-Bedingung
In MySQL können Sie mit der CONCAT-Funktion mehrere Werte zu einem verketten einzelner Ausdruck. Allerdings kann bei Benutzern der Fehler „Unbekannte Spalte“ auftreten, wenn sie versuchen, die Funktion als Bedingung in einer WHERE-Klausel zu verwenden.
Verstehen des Problems
Der Fehler tritt auf, weil Der dem verketteten Wert zugewiesene Alias (z. B. firstlast) wird in der Abfrage nicht als gültige Spalte erkannt. Dies liegt daran, dass Aliase nur auf die Ausgabe einer Abfrage angewendet werden und nicht innerhalb der Abfrage selbst verfügbar sind.
Lösung
Um dieses Problem zu beheben, Es gibt zwei mögliche Vorgehensweisen:
1. Wiederholen des Ausdrucks:
Eine Möglichkeit, den Fehler zu vermeiden, besteht darin, den CONCAT-Ausdruck in der WHERE-Klausel zu wiederholen:
SELECT neededfield, CONCAT(firstname, ' ', lastname) AS firstlast FROM users WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones";
Diese Methode stellt sicher, dass der verkettete Wert korrekt verglichen wird die gewünschte Eingabe.
2. Einschließen der Abfrage:
Alternativ können Sie die ursprüngliche Abfrage in eine Unterabfrage einschließen und einen Alias für den verketteten Wert innerhalb der inneren Abfrage erstellen:
SELECT * FROM ( SELECT neededfield, CONCAT(firstname, ' ', lastname) AS firstlast FROM users ) AS base WHERE firstlast = "Bob Michael Jones";
In diesem Fall Der Alias firstlast wird dem verketteten Wert innerhalb der Unterabfrage zugewiesen, sodass er als Bedingung in der äußeren Abfrage verwendet werden kann.
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL einen Fehler „Unbekannte Spalte' aus, wenn CONCAT in einer WHERE-Klausel verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!