Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich in meiner SQL-Abfrage die Fehlermeldung „Spalte ist in der Auswahlliste ungültig'?
SQL „Spalte ist in der Auswahlliste ungültig“ Fehler erklärt
Datenbankabfragen müssen der Einzelwertregel folgen. Das bedeutet, dass jede Spalte in Ihrer SELECT
-Anweisung entweder:
GROUP BY
-Klausel einbezogen werden (Gruppierung von Zeilen basierend auf bestimmten Spaltenwerten).SUM
, MIN
, MAX
, AVG
, COUNT
usw.).Problem mit der SQL-Abfrage:
Die folgende Abfrage verstößt gegen diese Regel:
<code class="language-sql">select * from Employee as emp full join Location as loc on emp.LocationID = loc.LocationID group by (loc.LocationID)</code>
Das *
wählt alle Spalten aus. Employee.EmpID
(und andere Employee
-Spalten) werden jedoch weder nach (GROUP BY
) gruppiert noch aggregiert. Da mehrere Mitarbeiter ein loc.LocationID
teilen können, ist die Abfrage mehrdeutig – es weiß nicht, welches Employee.EmpID
für jeden Standort zurückgegeben werden soll.
Lösungen:
Um dies zu beheben, haben Sie zwei Hauptoptionen:
GROUP BY
-Klausel einbeziehen:<code class="language-sql">select emp.EmpID, loc.LocationID from Employee as emp full join Location as loc on emp.LocationID = loc.LocationID group by emp.EmpID, loc.LocationID</code>
Dadurch werden die Ergebnisse sowohl nach Mitarbeiter-ID als auch nach Standort-ID gruppiert, sodass für jeden Mitarbeiter an jedem Standort ein eindeutiges Ergebnis entsteht.
<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>
Dabei wird die Anzahl der Mitarbeiter (count(emp.EmpID)
) an jedem Standort gezählt. Andere Aggregatfunktionen könnten zur Berechnung von Summen, Durchschnittswerten oder anderen Statistiken verwendet werden.
Durch Befolgen der Einzelwertregel liefern Ihre SQL-Abfragen klare, eindeutige und vorhersehbare Ergebnisse.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in meiner SQL-Abfrage die Fehlermeldung „Spalte ist in der Auswahlliste ungültig'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!