Heim  >  Artikel  >  Datenbank  >  Warum gibt MySQL einen Fehler „Unbekannte Spalte' aus, wenn CONCAT in einer WHERE-Klausel verwendet wird?

Warum gibt MySQL einen Fehler „Unbekannte Spalte' aus, wenn CONCAT in einer WHERE-Klausel verwendet wird?

Barbara Streisand
Barbara StreisandOriginal
2024-11-12 14:53:02757Durchsuche

Why Does MySQL Throw an

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!

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