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!