Heim >Datenbank >MySQL-Tutorial >Wie ordne ich fortlaufende Zeilennummern innerhalb partitionierter Gruppen in SQL zu?
Sequentielle Nummerierung von Zeilen innerhalb partitionierter Gruppen in SQL
Frage:
Wie können Sie zuweisen fortlaufende Zeilennummern innerhalb jeder Schlüsselgruppe in einer SQL-Tabelle unter Verwendung eines bestimmten Attributs als Partitionierung Faktor?
Partitionierung nach Schlüsselgruppe:
Das Ziel besteht darin, eine Zeilennummer sequentiell für jeden eindeutigen Wert in einer bestimmten Schlüsselspalte oder Spaltenkombination zu erhöhen. Wenn die Tabelle beispielsweise Tupel von (CODE, NAME) enthält, möchten Sie Zeilen mit demselben CODE-Wert fortlaufende Nummern zuweisen, wie unten dargestellt:
Originaltabelle:
CODE | NAME |
---|---|
A | Apple |
A | Angel |
A | Arizona |
B | Bravo |
C | Charlie |
C | Cat |
D | Dog |
D | Doppler |
D | Data |
D | Down |
Gewünschtes Ergebnis mit aufeinanderfolgenden Zeilennummern, unterteilt nach CODE:
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 |
Implementierung:
Mehrere SQL-Dialekte unterstützen diese Funktionalität durch die Analysefunktion ROW_NUMBER() OVER():
SQL Server:
SELECT CODE, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO, NAME FROM MyTable
Oracle:
SELECT CODE, RANK() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO, NAME FROM MyTable
Pos tgres:
SELECT CODE, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO, NAME FROM MyTable
Sybase:
SELECT CODE, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO, NAME FROM MyTable
MySQL 8.0 :
SELECT CODE, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO, NAME FROM MyTable
MariaDB 10.2 :
SELECT CODE, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO, NAME FROM MyTable
SQLite 3.25 :
SELECT CODE, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO, NAME FROM MyTable
Durch die Verwendung dieser Abfragen können Sie effektiv fortlaufende Zeilennummern innerhalb jeder Schlüsselgruppe in Ihrer SQL zuweisen Tabelle.
Das obige ist der detaillierte Inhalt vonWie ordne ich fortlaufende Zeilennummern innerhalb partitionierter Gruppen in SQL zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!