404 Stimmen

Was bedeutet die SQL-Klausel "GROUP BY 1"?

Jemand hat mir eine SQL-Abfrage geschickt, bei der die GROUP BY Die Klausel bestand aus der Aussage: GROUP BY 1 .

Das muss ein Tippfehler sein, oder? Keine Spalte hat den Alias 1. Was könnte das bedeuten? Liege ich richtig in der Annahme, dass es sich um einen Tippfehler handelt?

464voto

Yuck Punkte 46967

Das bedeutet, dass Sie nach der ersten Spalte Ihrer Ergebnismenge gruppieren müssen, unabhängig davon, wie sie genannt wird. Sie können dasselbe mit ORDER BY .

158voto

Vishwanath Dalvi Punkte 33414
SELECT account_id, open_emp_id
         ^^^^        ^^^^
          1           2

FROM account
GROUP BY 1;

In der obigen Abfrage GROUP BY 1 bezieht sich auf die first column in select statement w account_id .

Sie können auch in ORDER BY .

Hinweis: Die Zahlen in ORDER BY und GROUP BY beginnen immer mit 1 und nicht mit 0.

43voto

vol7ron Punkte 38053

Zusätzlich zur Gruppierung nach dem Feldnamen können Sie auch nach der Ordnungszahl oder der Position des Feldes innerhalb der Tabelle gruppieren. 1 entspricht dem ersten Feld (unabhängig vom Namen), 2 dem zweiten und so weiter.

Dies ist im Allgemeinen nicht ratsam, wenn Sie nach etwas Bestimmtem gruppieren, da sich die Struktur der Tabelle/Ansicht ändern kann. Außerdem kann es schwierig sein, schnell zu verstehen, was Ihre SQL-Abfrage tut, wenn Sie sich die Tabellenfelder nicht eingeprägt haben.

Wenn Sie eine eindeutige Menge zurückgeben oder schnell eine temporäre Suche durchführen, ist dies eine gute Kurzsyntax, um die Tipparbeit zu reduzieren. Wenn Sie planen, die Abfrage irgendwann noch einmal auszuführen, würde ich empfehlen, diese zu ersetzen, um zukünftige Verwirrung und unerwartete Komplikationen (aufgrund von Schemaänderungen) zu vermeiden.

15voto

Daan Geurts Punkte 421

Es wird nach dem ersten Feld in der Select-Klausel gruppiert

15voto

张艳军 Punkte 231

Das bedeutet *"gruppieren nach der 1. Spalte in Ihrer Select-Klausel". Verwenden Sie immer GROUP BY 1 zusammen mit ORDER BY 1 .

Sie können auch Folgendes verwenden GROUP BY 1,2,3.. . Das ist praktisch, aber Sie müssen auf diese Bedingung achten; das Ergebnis ist möglicherweise nicht das, was Sie wollen, wenn jemand Ihre Auswahlspalten geändert hat und dies nicht angezeigt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X