Heim >Datenbank >MySQL-Tutorial >Warum gibt meine Oracle-GROUP-BY-Abfrage den Fehler „Kein GROUP-BY-Ausdruck' zurück?
Bei der Verwendung von GROUP BY ohne Aggregatfunktionen ist es wichtig zu verstehen, wie Oracle funktioniert, um zu vermeiden, dass auf Folgendes stößt Fehler „Kein GROUP BY-Ausdruck“.
GROUP BY gruppiert Zeilen mit identischen Werten für die angegebenen Spalten und erzeugt eine einzelne Ergebniszeile. Spalten, die nicht in einer Aggregatfunktion vorkommen, müssen jedoch in die GROUP BY-Klausel aufgenommen werden, um die eindeutige Kombination von Gruppierungswerten zu identifizieren.
Beachten Sie die folgende Tabelle:
EMP +-------+------+------+ | EmpNo | EName | Sal | +-------+------+------+ | 7839 | King | 5000 | | 7698 | Blake | 2850 | | 7782 | Clark | 2450 | +-------+------+------+
Beispiel 1:
SELECT EName, Sal FROM EMP GROUP BY EName, Sal
Ergebnis:
+------+------+ | EName | Sal | +------+------+ | King | 5000 | | Blake | 2850 | | Clark | 2450 | +------+------+
Diese Abfrage gruppiert die Zeilen korrekt und gibt alle Zeilen seit den Gruppierungsspalten (EName und Sal ) Übereinstimmung.
Beispiel 2:
SELECT EName, Sal FROM EMP GROUP BY EName
Ergebnis:
ORA-00979: not a GROUP BY expression
Diese Abfrage schlägt fehl, weil Sal nicht in der GROUP BY-Klausel enthalten ist. Oracle weiß nicht, wie die mehreren Zeilen mit unterschiedlichen Sal-Werten für denselben EName aggregiert werden sollen.
Beispiel 3:
SELECT EName, Sal FROM EMP GROUP BY Sal
Ergebnis:
ORA-00979: not a GROUP BY expression
Diese Abfrage schlägt ebenfalls fehl, weil EName nicht in der GROUP BY-Klausel enthalten ist. Oracle muss wissen, welcher EName jedem eindeutigen Sal-Wert zugeordnet werden soll.
Beispiel 4:
SELECT EmpNo, EName, Sal FROM EMP GROUP BY Sal, EName
Ergebnis:
ORA-00979: not a GROUP BY expression
Diese Abfrage schlägt fehl, weil die Anzahl der ausgewählten Spalten (EmpNo, EName, Sal) die Anzahl der Spalten in der GROUP überschreitet BY-Klausel (Sal, EName). Oracle erfordert, dass die ausgewählten Spalten unter Berücksichtigung der eindeutigen Kombinationen Teil der Gruppierung sind.
Beispiel 5:
SELECT EmpNo, EName, Sal FROM EMP GROUP BY EmpNo, EName, Sal
Ergebnis:
+-------+------+------+ | EmpNo | EName | Sal | +-------+------+------+ | 7839 | King | 5000 | | 7698 | Blake | 2850 | | 7782 | Clark | 2450 | +-------+------+------+
Diese Abfrage ist erfolgreich, da alle ausgewählten Spalten in der GROUP BY-Klausel enthalten sind. Oracle berücksichtigt jede eindeutige Kombination aus EmpNo, EName und Sal, was zu drei unterschiedlichen Zeilen führt.
Das obige ist der detaillierte Inhalt vonWarum gibt meine Oracle-GROUP-BY-Abfrage den Fehler „Kein GROUP-BY-Ausdruck' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!