Czy mogę uruchomić instrukcję select i uzyskać numer wiersza, jeśli elementy są posortowane?MySQL - Uzyskaj numer wiersza przy wyborze
Mam tabeli tak:
mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| itemID | bigint(20) unsigned | NO | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
mogę następnie uruchomić tę kwerendę, aby uzyskać liczbę zleceń przez ID:
SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;
To daje mi liczyć każdego itemID
w tabela tak:
+--------+------------+
| itemID | ordercount |
+--------+------------+
| 388 | 3 |
| 234 | 2 |
| 3432 | 1 |
| 693 | 1 |
| 3459 | 1 |
+--------+------------+
Chcę również uzyskać numer wiersza, więc mogłem stwierdzić, że itemID=388
to pierwszy wiersz, 234
jest drugim, itd. (W zasadzie ranking zamówień, a nie tylko liczba nieprzetworzona). Wiem, że mogę to zrobić w Javie, gdy otrzymam zestaw wyników, ale zastanawiałem się, czy istnieje sposób, aby poradzić sobie z tym wyłącznie w SQL.
Aktualizacja
Ustawianie rangę dodaje go do zestawu wyników, ale nie właściwie uporządkowane:
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)
Na przyszłość: Jeśli chcesz zamówić od 1 do 5, użyj "ORDER BY rank ASC" (porządkowanie według rangi w porządku ASCending). Domyślam się, że to masz na myśli * ale nie jest prawidłowo uporządkowany * – GroundZero
Prawdopodobny duplikat [ROW \ _NUMBER() w MySQL] (http://stackoverflow.com/questions/1895110/row-number-in-mysql) –