Heim > Datenbank > MySQL-Tutorial > Wie behebe ich den ORA-00979-Fehler „Kein GROUP BY-Ausdruck' in SQL-Abfragen?

Wie behebe ich den ORA-00979-Fehler „Kein GROUP BY-Ausdruck' in SQL-Abfragen?

Patricia Arquette
Freigeben: 2025-01-24 04:41:08
Original
448 Leute haben es durchsucht

How to Resolve the ORA-00979

ORA-00979: Kein GROUP BY-Ausdruck

Der ORA-00979-Fehler weist auf eine Nichtübereinstimmung zwischen der SELECT-Liste und der GROUP BY-Klausel Ihrer SQL-Abfrage hin. Dies tritt normalerweise auf, wenn eine SELECT-Anweisung Spalten enthält, die nicht in der GROUP BY-Klausel enthalten sind, und diese Spalten nicht mit Funktionen wie SUM, AVG, MIN, MAX, COUNT aggregiert werden. usw.

Szenario:

Ihre Abfrage umfasst wahrscheinlich mehrere Tabellen (z. B. review, cs, fact) und die GROUP BY-Klausel umfasst nicht alle nicht aggregierten Spalten in der SELECT-Liste. Zum Beispiel:

<code class="language-sql">SELECT cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number,  cf.some_other_column  -- Problem: cf.some_other_column is missing from GROUP BY
FROM review cr
JOIN cs ON ...
JOIN fact cf ON ...
GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number;</code>
Nach dem Login kopieren

Lösung:

Um das Problem zu beheben, gehen Sie entweder wie folgt vor:

  1. Fügen Sie die fehlende(n) Spalte(n) zur GROUP BY-Klausel hinzu: Schließen Sie alle Spalten aus der SELECT-Liste ein, die nicht in der GROUP BY-Klausel zusammengefasst sind.

  2. Aggregieren Sie die fehlende(n) Spalte(n):Verwenden Sie eine Aggregatfunktion (z. B. SUM(cf.some_other_column)), um die Werte für die Spalte zusammenzufassen.

Zusätzliche Überlegungen:

  • Ungleichheits-Joins: Auch wenn alle SELECT-Spalten in GROUP BY stehen, kann der Fehler bei Ungleichheits-Joins auftreten (z. B. t1.id > t2.id). Dadurch entstehen doppelte Zeilen, was einen Verstoß gegen das GROUP BY-Prinzip darstellt. Überarbeiten Sie Ihre Join-Bedingungen oder verwenden Sie Unterabfragen, um Duplikate zu beseitigen.

  • Verstehen von GROUP BY: Die GROUP BY-Klausel gruppiert Zeilen mit identischen Werten in angegebenen Spalten, sodass Aggregatfunktionen für jede Gruppe ausgeführt werden können. Ohne ordnungsgemäße Gruppierung kann die Datenbank keinen einzelnen Wert für nicht aggregierte Spalten ermitteln.

Indem Sie sicherstellen, dass jede Spalte in Ihrer SELECT-Liste entweder in der GROUP BY-Klausel enthalten oder aggregiert ist, können Sie den ORA-00979-Fehler beheben und konsistente Abfrageergebnisse erhalten.

Das obige ist der detaillierte Inhalt vonWie behebe ich den ORA-00979-Fehler „Kein GROUP BY-Ausdruck' in SQL-Abfragen?. 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