Problem:
Erstellen Sie eine MySQL-Abfrage, um eine Zeilennummer für jede Gruppe zu generieren von Datensätzen basierend auf zwei Feldern, z. B. „crew_id“ und „type“. Die Zeilennummer sollte für jede neue Kombination aus Crew_ID und Typ zurückgesetzt werden.
Beispieldaten:
id crew_id amount type 1 4 1000 AUB 2 4 1500 AUB 3 5 8000 CA 4 4 1000 CA 5 5 1000 AUB 6 6 3000 AUB 7 4 2000 CA 8 6 3500 AUB 9 4 5000 AUB 10 5 9000 CA 11 5 1000 CA
Gewünschte Ausgabe:
id crew_id amount type row_number 1 4 1000 AUB 1 2 4 1500 AUB 2 9 4 5000 AUB 3 4 4 1000 CA 1 7 4 2000 CA 2 5 5 1000 AUB 1 3 5 8000 CA 1 10 5 9000 CA 2 11 5 1000 CA 3 6 6 3000 AUB 1 6 6 3000 AUB 2
Lösung:
Um die gewünschten Zeilennummern zu erreichen, können wir eine Kombination aus einer Unterabfrage und einer CASE-Anweisung verwenden:
SELECT id, crew_id, amount, type, ( CASE type WHEN @curType THEN @curRow := @curRow + 1 ELSE @curRow := 1 AND @curType := type END ) + 1 AS rank FROM Table1 p, (SELECT @curRow := 0, @curType := '') r ORDER BY crew_id,type asc;
In Diese Abfrage:
Die CASE-Anweisung in der äußeren SELECT-Abfrage vergleicht die Typspalte mit @curType, um zu bestimmen, ob die aktuelle Zeile zur gleichen Gruppe gehört.
Das obige ist der detaillierte Inhalt vonWie generiert man Zeilennummern innerhalb von Gruppen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!