abrufen Kann ich eine SELECT-Anweisung ausführen und die Zeilennummer abrufen, wenn die Elemente sortiert sind?MySQL - Zeilennummer bei Auswahl
Ich habe eine Tabelle wie folgt aus:
mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| itemID | bigint(20) unsigned | NO | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
dann kann ich diese Abfrage ausführen, um die Anzahl der Bestellungen von ID zu erhalten:
SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;
Das gibt mir eine Zählung jedes itemID
in der Tabelle wie folgt:
+--------+------------+
| itemID | ordercount |
+--------+------------+
| 388 | 3 |
| 234 | 2 |
| 3432 | 1 |
| 693 | 1 |
| 3459 | 1 |
+--------+------------+
Ich möchte die Zeilennummer auch erhalten, damit ich dassagen konnteist die erste Zeile, 234
ist zweite, usw. (im Wesentlichen die Reihenfolge der Aufträge, nicht nur eine rohe Anzahl). Ich weiß, dass ich dies in Java tun kann, wenn ich das Ergebnis zurückbekomme, aber ich frage mich, ob es einen Weg gibt, es rein in SQL zu handhaben.
aktualisieren
den Rang Einstellung fügt sie der Ergebnismenge, aber nicht richtig bestellt:
mysql> SET @rank=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @rank:[email protected]+1 AS rank, itemID, COUNT(*) as ordercount
-> FROM orders
-> GROUP BY itemID ORDER BY rank DESC;
+------+--------+------------+
| rank | itemID | ordercount |
+------+--------+------------+
| 5 | 3459 | 1 |
| 4 | 234 | 2 |
| 3 | 693 | 1 |
| 2 | 3432 | 1 |
| 1 | 388 | 3 |
+------+--------+------------+
5 rows in set (0.00 sec)
Für zukünftige Referenz: Wenn Sie von Rang 1 bis Rang 5 bestellen möchten, verwenden Sie 'ORDER BY Rang ASC' (Reihenfolge nach Rang in ASCending Reihenfolge). Ich denke das ist was du meinst mit * aber nicht richtig geordnet * – GroundZero
Mögliches Duplikat von [ROW \ _NUMBER() in MySQL] (http://stackoverflow.com/questions/1895110/row-number-in-mysql) –