Heim >Datenbank >MySQL-Tutorial >Warum gibt meine SQL-SELECT-Abfrage mit GROUP BY den Fehler „Ungültige Spalte' zurück?

Warum gibt meine SQL-SELECT-Abfrage mit GROUP BY den Fehler „Ungültige Spalte' zurück?

Linda Hamilton
Linda HamiltonOriginal
2025-01-23 01:07:11862Durchsuche

Why Does My SQL SELECT Query with GROUP BY Return an

SQL GROUP BY Ungültiger Spaltenfehler in der Abfrage

Bei der Auswahl von Spalten in einer SQL-Abfrage, die eine GROUP BY-Klausel enthält, kann ein Fehler auftreten, wenn die Spalte weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist. Dieser Fehler sieht normalerweise so aus: „Spalte ‚Employee.EmpID‘ ist in der Auswahlliste ungültig, da sie weder in einer Aggregatfunktion noch in einer GROUP BY-Klausel enthalten ist.“

Der Grund dafür ist die Einwertregel. In GROUP BY-Abfragen muss die Ausgabe für nicht aggregierte Spalten innerhalb jeder Gruppe eindeutig sein. Wenn Sie jedoch eine einzelne Spalte auswählen, ohne sie zu aggregieren, beispielsweise „Employee.EmpID“, führt dies zu mehrdeutigen Ergebnissen.

Um diesen Fehler zu beheben, fügen Sie die Spalte in eine GROUP BY-Klausel ein oder wenden Sie eine Aggregatfunktion darauf an. Wenn Sie beispielsweise die Anzahl der Mitarbeiter pro Standort berechnen möchten, verwenden Sie die folgende Abfrage:

<code class="language-sql">SELECT loc.LocationID, COUNT(emp.EmpID) AS EmployeeCount
FROM Employee AS emp
FULL JOIN Location AS loc
ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID</code>

Diese Abfrage zählt die Anzahl der Mitarbeiter an jedem Standort und stellt gleichzeitig Standort-IDs für jede Gruppe bereit. Wenn Sie alternativ alle Spalten für jeden Standort auswählen, aber nur die neueste Mitarbeiter-ID (Maximalwert) anzeigen möchten, können Sie die Aggregatfunktion MAX verwenden:

<code class="language-sql">SELECT loc.LocationID, MAX(emp.EmpID) AS LatestEmployeeID
FROM Employee AS emp
FULL JOIN Location AS loc
ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID</code>

Durch die Verwendung von Aggregatfunktionen oder das Einschließen von Spalten in eine GROUP BY-Klausel können Sie sicherstellen, dass die abgerufenen Daten eindeutig sind und den Einzelwertregeln entsprechen.

Das obige ist der detaillierte Inhalt vonWarum gibt meine SQL-SELECT-Abfrage mit GROUP BY den Fehler „Ungültige Spalte' zurück?. 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