Heim > Datenbank > MySQL-Tutorial > Wie füge ich Zeilennummern zu sortierten Daten in MySQL hinzu?

Wie füge ich Zeilennummern zu sortierten Daten in MySQL hinzu?

Susan Sarandon
Freigeben: 2025-01-21 23:56:10
Original
503 Leute haben es durchsucht

How to Add Row Numbers to Sorted Data in MySQL?

Zeilennummern für sortierte Daten in MySQL hinzufügen

Beim Arbeiten mit sortierten Daten in MySQL kann das Abrufen der Zeilennummer für jeden Datensatz die bereitgestellten Informationen verbessern und eine detailliertere Analyse erleichtern. In diesem Artikel wird untersucht, wie dies mit reinem SQL erreicht werden kann, und es wird eine Lösung bereitgestellt, die eine Nachbearbeitung in Java oder anderen Programmiersprachen vermeidet.

Datenbanktabellenstruktur

Betrachten Sie die folgende Tabelle mit dem Namen „Bestellungen“ mit den Feldern „orderID“ und „itemID“:

<code class="language-sql">mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field       | Type                | Null | Key | Default | Extra          |
+-------------+---------------------+------+-----+---------+----------------+
| orderID     | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| itemID      | bigint(20) unsigned | NO   |     | NULL    |                |
+-------------+---------------------+------+-----+---------+----------------+</code>
Nach dem Login kopieren

Ursprüngliche Anfrage

Verwenden Sie zunächst die Abfrage, um die Bestellanzahl für jede Artikel-ID abzurufen:

<code class="language-sql">SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;</code>
Nach dem Login kopieren

Zeilennummer hinzufügen

Um die Zeilennummer hinzuzufügen, können Sie die Abfrage wie folgt ändern:

<code class="language-sql">SET @rank=0;
SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID
ORDER BY ordercount DESC;
SELECT @rank;</code>
Nach dem Login kopieren

Beschreibung

  • SET @rank=0;: Dadurch wird die benutzerdefinierte Variable @rank auf 0 initialisiert, die als Zähler für Zeilennummern fungiert.
  • SELECT @rank:=@rank 1 AS rank, itemID, COUNT(*) as ordercount: Dieser Teil der Abfrage bewirkt Folgendes:
    • Erhöhen Sie @rank für jede Zeile um 1 und weisen Sie den neuen Wert der Spalte „Rang“ im Ergebnis zu.
    • Behalten Sie die Spalten „itemID“ und „ordercount“ aus der ursprünglichen Abfrage bei.
  • ORDER BY ordercount DESC: Diese Klausel stellt sicher, dass die Zeilen in absteigender Reihenfolge basierend auf dem Feld „ordercount“ sortiert werden.
  • SELECT @rank: Die letzte SELECT-Anweisung ruft den Endwert von @rank ab, der die Gesamtzahl der Zeilen im Ergebnissatz darstellt.

Verbesserte Ergebnisse

Das Ausführen der geänderten Abfrage liefert die folgenden verbesserten Ergebnisse:

<code>+------+--------+------------+
| rank | itemID | ordercount |
+------+--------+------------+
| 1    | 388    | 3          |
| 2    | 234    | 2          |
| 3    | 3432   | 1          |
| 4    | 693    | 1          |
| 5    | 3459   | 1          |
+------+--------+------------+</code>
Nach dem Login kopieren

Wie Sie sehen können, verfügt jede Zeile jetzt über eine zusätzliche „Rang“-Spalte, die ihre Position im sortierten Ergebnissatz angibt.

Das obige ist der detaillierte Inhalt vonWie füge ich Zeilennummern zu sortierten Daten in MySQL hinzu?. 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