Posso eseguire un'istruzione select e ottenere il numero di riga se gli elementi sono ordinati?MySQL - Ottieni il numero di riga su select
Ho una tabella come questa:
mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| itemID | bigint(20) unsigned | NO | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
posso quindi eseguire la query per ottenere il numero di ordini da ID:
SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;
Questo mi dà un conteggio di ogni itemID
nel tabella come questa:
+--------+------------+
| itemID | ordercount |
+--------+------------+
| 388 | 3 |
| 234 | 2 |
| 3432 | 1 |
| 693 | 1 |
| 3459 | 1 |
+--------+------------+
voglio ottenere il numero di riga e, in modo potrei dire che itemID=388
è la prima riga, 234
è il secondo, ecc. (Essenzialmente la classifica degli ordini, non solo un conteggio grezzo). So che posso farlo in Java quando ottengo il risultato, ma mi chiedevo se c'era un modo per gestirlo esclusivamente in SQL.
Aggiornamento
Impostazione del rango aggiunge al set di risultati, ma non propriamente ordinato:
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)
Per riferimento futuro: Se si desidera ordinare dal rango 1 al rango 5, utilizzare 'ORDER BY rango ASC '(ordinamento in base al rango in ordine crescente). Immagino che questo sia ciò che intendi per * ma non correttamente ordinato * – GroundZero
Possibile duplicato di [ROW \ _NUMBER() in MySQL] (http://stackoverflow.com/questions/1895110/row-number-in-mysql) –