Heim >Datenbank >MySQL-Tutorial >Warum gibt meine SQL-SELECT-Abfrage mit GROUP BY den Fehler „Ungültige Spalte' zurück?
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!