Heim >Datenbank >MySQL-Tutorial >Wie nummeriere ich Zeilen innerhalb von Gruppen in SQL fortlaufend?
Sequentielle Nummerierung von Zeilen nach Schlüsselgruppe in SQL
Die Aufgabe, Zeilen, die nach einem bestimmten Schlüssel gruppiert sind, in SQL fortlaufend zu nummerieren, ist eine häufige Anforderung in Datenverarbeitung. Um dies zu erreichen, bieten verschiedene SQL-Datenbanken native Funktionen und Techniken, die eine effiziente und genaue Zeilennummerierung innerhalb jeder Schlüsselgruppe ermöglichen.
Implementierung in verschiedenen Datenbanken
Viele gängige SQL Datenbanken bieten integrierte Funktionen oder Erweiterungen für die sequentielle Zeilennummerierung:
Beispiel Abfrage
Betrachten Sie die folgende Beispieltabelle mit nach dem CODE gruppierten Tupeln Spalte:
CODE | NAME ------|------ A | Apple A | Angel A | Arizona B | Bravo C | Charlie C | Cat D | Dog D | Data D | Down D | Doppler
Um Zeilen innerhalb jeder CODE-Gruppe fortlaufend zu nummerieren, kann die folgende Abfrage verwendet werden:
SELECT CODE, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 AS C_NO, NAME FROM MyTable;
Ausgabe
Die Die Abfrage erzeugt die folgende Ausgabe, wobei die Zeilen in jedem CODE fortlaufend nummeriert sind Gruppe:
CODE | C_NO | NAME ------|------|------ A | 0 | Apple A | 1 | Angel A | 2 | Arizona B | 0 | Bravo C | 1 | Charlie C | 0 | Cat D | 0 | Dog D | 1 | Data D | 2 | Down D | 3 | Doppler
Hinweis:
Die Funktion ROW_NUMBER() beginnt standardmäßig mit der Nummerierung bei 1. Zur Anpassung an die gewünschte Ausgabe wird der Ausdruck ROW_NUMBER() OVER (PARTITION BY ...) - 1 verwendet, um die Nummerierung von 1-basiert auf 0-basiert zu verschieben.
Das obige ist der detaillierte Inhalt vonWie nummeriere ich Zeilen innerhalb von Gruppen in SQL fortlaufend?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!