Heim >Datenbank >MySQL-Tutorial >Wie nummeriere ich Zeilen innerhalb von Gruppen in SQL fortlaufend?

Wie nummeriere ich Zeilen innerhalb von Gruppen in SQL fortlaufend?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 21:22:10187Durchsuche

How to Sequentially Number Rows within Groups in SQL?

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:

  • SQL Server: ROW_NUMBER() OVER (PARTITION BY ...)
  • Oracle: ROW_NUMBER() OVER (PARTITION BY ...)
  • Postgres: ROW_NUMBER() OVER (PARTITION BY ...)
  • Sybase: ROW_NUMBER() OVER (PARTITION BY ...)
  • MySQL 8.0 : ROW_NUMBER() OVER (PARTITION VON ...)
  • MariaDB 10.2 : ROW_NUMBER() OVER (PARTITION BY ...)
  • SQLite 3.25 : ROW_NUMBER() OVER (PARTITION BY ...)

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!

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