Heim > Datenbank > MySQL-Tutorial > Warum generiert meine SQL-Abfrage ORA-00979: Kein GROUP BY-Ausdruck?

Warum generiert meine SQL-Abfrage ORA-00979: Kein GROUP BY-Ausdruck?

DDD
Freigeben: 2025-01-24 04:32:09
Original
524 Leute haben es durchsucht

Why Does My SQL Query Generate ORA-00979: Not a GROUP BY Expression?

Dekodierung des ORA-00979-Fehlers in der GROUP BY-Klausel von SQL

Dieser häufige SQL-Fehler, ORA-00979 („Kein GROUP BY-Ausdruck“), tritt auf, wenn Ihre Abfrage GROUP BY verwendet, aber Spalten in der SELECT-Liste enthält, die weder gruppiert noch aggregiert sind. Lassen Sie uns herausfinden, wie Sie dieses Problem beheben können.

Das Kernproblem liegt in der Diskrepanz zwischen den Klauseln SELECT und GROUP BY. GROUP BY konsolidiert Zeilen mit übereinstimmenden Werten in Gruppen. Jede Spalte in Ihrer SELECT-Anweisung muss entweder:

  1. Erscheint in der GROUP BY-Klausel: Dadurch wird sichergestellt, dass jeder ausgewählte Wert direkt einer Gruppe zugeordnet ist.
  2. Aggregiert werden: Verwenden Sie Funktionen wie MIN(), MAX(), SUM(), AVG(), COUNT(), um Werte innerhalb jeder Gruppe zusammenzufassen.

Anschauliches Beispiel

Stellen Sie sich einen Tisch mit Terminen vor:

Appointment ID (appt_id) Patient Name (patient) Doctor (doctor)
1 Alice Dr. Smith
2 Bob Dr. Smith
3 Charlie Dr. Jones

Eine falsche Abfrage:

<code class="language-sql">SELECT appt_id, patient, doctor FROM appointments GROUP BY doctor;</code>
Nach dem Login kopieren

Dies schlägt mit ORA-00979 fehl, da appt_id und patient nicht gruppiert sind.

Richtige Vorgehensweisen

  • Alle nicht aggregierten Spalten in GROUP BY einschließen:
<code class="language-sql">SELECT doctor, COUNT(*) FROM appointments GROUP BY doctor;</code>
Nach dem Login kopieren

Dies zählt die Termine pro Arzt.

  • Aggregatfunktionen verwenden:
<code class="language-sql">SELECT doctor, COUNT(*) AS appointment_count, MIN(appt_id) AS first_appointment FROM appointments GROUP BY doctor;</code>
Nach dem Login kopieren

Dies zählt Termine und ermittelt die Mindesttermin-ID pro Arzt.

Der Schlüssel besteht darin, eine konsistente Beziehung zwischen den Gruppierungskriterien und den ausgewählten Daten sicherzustellen. Durch die Verwendung von Aggregatfunktionen können Sie Daten innerhalb von Gruppen zusammenfassen und so den ORA-00979-Fehler vermeiden.

Das obige ist der detaillierte Inhalt vonWarum generiert meine SQL-Abfrage ORA-00979: Kein GROUP BY-Ausdruck?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage