ROW_NUMBER
Nummeriert die Zeilen einer Fensterpartition in der Reihenfolge von ORDER BY, beginnend mit 1.
MySQL 8.4
ROW_NUMBER()Rückgabewert
Ganze Zahl (BIGINT UNSIGNED) von 1 bis zur Anzahl der Zeilen in der Partition
Beispiele
Zeilennummern nach Status
MySQL 8.4
SELECT member_name,
status,
ROW_NUMBER() OVER (
ORDER BY status
) AS row_num
FROM FamilyMembers;Nummerierung innerhalb jedes Status
MySQL 8.4
SELECT member_name,
status,
birthday,
ROW_NUMBER() OVER (
PARTITION BY status
ORDER BY birthday
) AS num_in_status
FROM FamilyMembers;Details
Zeilen mit gleichen Werten in ORDER BY bekommen trotzdem verschiedene Nummern in beliebiger Reihenfolge. Ohne ORDER BY ist die Reihenfolge der Nummerierung nicht festgelegt. Eine Fensterfunktion kannst du nicht in WHERE verwenden: Um zum Beispiel die erste Zeile jeder Partition zu behalten, berechne die Nummer in einer Unterabfrage und filtere in der äußeren Abfrage.