Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich in meiner SQL-Abfrage die Fehlermeldung „Spalte ist in der Auswahlliste ungültig'?

Warum erhalte ich in meiner SQL-Abfrage die Fehlermeldung „Spalte ist in der Auswahlliste ungültig'?

Barbara Streisand
Freigeben: 2025-01-23 01:16:08
Original
1004 Leute haben es durchsucht

Why am I Getting a

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:

sein muss
  1. In die GROUP BY-Klausel einbezogen werden (Gruppierung von Zeilen basierend auf bestimmten Spaltenwerten).
  2. Wird innerhalb einer Aggregatfunktion verwendet (wie 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>
Nach dem Login kopieren

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:

  1. Alle nicht aggregierten Spalten in die 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>
Nach dem Login kopieren

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.

  1. Aggregatfunktionen für nicht gruppierte Spalten verwenden:
<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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage