Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie nummeriere ich Zeilen nach Gruppen in MySQL?

Barbara Streisand
Freigeben: 2024-11-11 21:52:03
Original
387 Leute haben es durchsucht

How to Number Rows by Group in MySQL?

Nummerierung von Zeilen nach Gruppe in MySQL

Beachten Sie die folgende Tabellenstruktur:

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

Um einen Ergebnissatz zu generieren das eine Zeilennummer für jede Kombination aus Crew_ID und Typ enthält, führen Sie Folgendes aus Abfrage:

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

Erklärung:

  • Die Abfrage initialisiert zunächst zwei Benutzervariablen, @curRow und @curType, um die aktuelle Zeilennummer und die zu verfolgen aktueller Wert des Typs.
  • In der Hauptabfrage prüft die CASE-Anweisung, ob der aktuelle Wert des Typs mit dem zuvor gespeicherten Wert in übereinstimmt @curType. Wenn sie übereinstimmen, wird @curRow um 1 erhöht. Andernfalls wird @curRow auf 1 zurückgesetzt und @curType mit dem neuen Wert aktualisiert.
  • Der Ausdruck (@curRow := @curRow 1) 1 fügt das inkrementierte oder hinzu Setzen Sie den Wert von @curRow um 1 zurück, um die Zeilennummer zu generieren.
  • Die Abfrage wird nach Crew_ID und Typ sortiert, um die richtige Gruppierung und Nummerierung vorzunehmen die Zeilen.

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

Das obige ist der detaillierte Inhalt vonWie nummeriere ich Zeilen nach Gruppen in MySQL?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage