Zeilennummerngenerierung für gruppierte Daten in MySQL
Das Zuweisen fortlaufender Zeilennummern zu nach bestimmten Spalten gruppierten Daten ist eine wertvolle Technik zur effizienten Datenbearbeitung und Präsentation. In diesem Szenario möchten Sie Zeilennummern für einen Datensatz basierend auf den Spalten „crew_id“ und „type“ generieren.
Um dies zu erreichen, verwenden Sie die folgende benutzerdefinierte 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
Lassen Sie uns Unterteilen Sie die Abfrage Schritt für Schritt:
-
Unterabfrage: Die benutzerdefinierte Abfrage beginnt mit einer Unterabfrage, die durch (SELECT @curRow := 0, @curType := '') r definiert ist . Dadurch werden zwei benutzerdefinierte Variablen, @curRow und @curType, initialisiert und auf 0 bzw. eine leere Zeichenfolge gesetzt. Diese Variablen verfolgen die Zeilennummer und die gefundenen Typwerte.
-
Äußere Abfrage: Die Hauptabfrage, dargestellt durch SELECT id, Crew_id, ..., ruft die erforderlichen Daten aus Tabelle1 ab Tisch. Das Hauptaugenmerk liegt hier auf der Berechnung der Rangspalte.
-
Verschachtelte CASE-Anweisung: Die CASE-Anweisung innerhalb der Rangberechnung prüft, ob der aktuelle Typwert mit dem zuvor gefundenen Typ (@curType) übereinstimmt. . Wenn sie übereinstimmen, erhöht es @curRow um 1 und weist den erhöhten Wert dem Rang zu. Wenn sich der Typ jedoch unterscheidet, wird @curRow auf 1 zurückgesetzt und @curType auf den aktuellen Typwert aktualisiert. Dies gewährleistet eine genaue Zeilennummerierung innerhalb jeder durch Crew_ID und Typ definierten Gruppe.
-
ORDER BY-Klausel: Das Endergebnis wird in aufsteigender Reihenfolge basierend auf Crew_ID und Typ sortiert, was für die richtige Zeile von entscheidender Bedeutung ist Nummernzuweisung innerhalb jeder Gruppe.
Durch Befolgen dieser umfassenden Abfrage können Sie Zeilennummern für Datengruppen, die durch mehrere Spalten definiert sind, effizient generieren und so eine vielseitige Lösung für Datenbearbeitungs- und Präsentationsaufgaben in MySQL bereitstellen.
Das obige ist der detaillierte Inhalt vonWie generiert man Zeilennummern für gruppierte Daten in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!