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
DDDOriginal
2024-12-22 12:27:15695Durchsuche

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

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!

Stellungnahme:
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