Heim > Datenbank > MySQL-Tutorial > Wie ordne ich fortlaufende Zeilennummern innerhalb partitionierter Gruppen in SQL zu?

Wie ordne ich fortlaufende Zeilennummern innerhalb partitionierter Gruppen in SQL zu?

DDD
Freigeben: 2024-12-22 12:27:15
Original
696 Leute haben es durchsucht

How to Assign Sequential Row Numbers Within Partitioned Groups in SQL?

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Oracle:

SELECT
    CODE,
    RANK() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
Nach dem Login kopieren

Pos tgres:

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sybase:

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

MySQL 8.0 :

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

MariaDB 10.2 :

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

SQLite 3.25 :

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage