Heim > Datenbank > MySQL-Tutorial > Wie kann ich Fehler vermeiden, dass es sich nicht um einen GROUP BY-Ausdruck handelt, wenn ich Aggregatfunktionen in SQL verwende?

Wie kann ich Fehler vermeiden, dass es sich nicht um einen GROUP BY-Ausdruck handelt, wenn ich Aggregatfunktionen in SQL verwende?

Susan Sarandon
Freigeben: 2025-01-13 06:15:43
Original
454 Leute haben es durchsucht

How Can I Avoid

Grundlegendes zur GROUP BY-Klausel und den Aggregatfunktionen von SQL

Die Verwendung der GROUP BY-Klausel von SQL führt oft zu Verwirrung darüber, welche Attribute nach der Gruppierung zugänglich sind. Lassen Sie uns Folgendes klären:

GROUP BY und nicht aggregierte Spalten

Der Versuch, nach der Gruppierung auf nicht aggregierte Spalten zuzugreifen, führt zu einem Fehler „Kein GROUP BY-Ausdruck“. Dies liegt daran, dass jede Gruppe möglicherweise mehrere Zeilen enthält und die Werte in nicht aggregierten Spalten in diesen Zeilen unterschiedlich sind.

Aggregatfunktionen: Ein tieferer Blick

Umgekehrt können Aggregatfunktionen (wie SUM, MAX, AVG usw.) auch nach Anwendung von GROUP BY auf zugrunde liegende Spalten innerhalb jeder Gruppe zugreifen. Sie berechnen einen einzigen Gesamtwert für die gesamte Gruppe.

Beispiel:

Bedenken Sie diese Abfrage:

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no;</code>
Nach dem Login kopieren

Diese Abfrage schlägt fehl, da versucht wird, alle Spalten auszuwählen, ohne Aggregatfunktionen für nicht aggregierte Spalten wie order_price zu verwenden.

Dies ist jedoch eine gültige Abfrage:

<code class="language-sql">SELECT SUM(order_price)
FROM order_details
GROUP BY order_no;</code>
Nach dem Login kopieren

Hier verarbeitet SUM jede Gruppe und summiert die order_price-Werte, um einen Gesamtpreis für jede order_no zu erhalten.

Einschließlich nicht aggregierter Spalten in GROUP BY

Um nach der Gruppierung auf nicht aggregierte Spalten zuzugreifen, fügen Sie diese in die GROUP BY-Klausel ein:

<code class="language-sql">SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no;</code>
Nach dem Login kopieren

Dadurch werden alle order_no zusammen mit ihrer Gesamtsumme order_price korrekt abgerufen.

Das obige ist der detaillierte Inhalt vonWie kann ich Fehler vermeiden, dass es sich nicht um einen GROUP BY-Ausdruck handelt, wenn ich Aggregatfunktionen in SQL verwende?. 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