Bisakah saya menjalankan pernyataan pilih dan mendapatkan nomor baris jika item diurutkan?
Saya punya tabel seperti ini:
mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| itemID | bigint(20) unsigned | NO | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
Saya kemudian dapat menjalankan kueri ini untuk mendapatkan jumlah pesanan berdasarkan ID:
SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;
Ini memberi saya hitungan masing-masing itemID
dalam tabel seperti ini:
+--------+------------+
| itemID | ordercount |
+--------+------------+
| 388 | 3 |
| 234 | 2 |
| 3432 | 1 |
| 693 | 1 |
| 3459 | 1 |
+--------+------------+
Saya ingin mendapatkan nomor baris juga, jadi saya bisa tahu itu itemID=388
adalah baris pertama, 234
kedua, dll (pada dasarnya peringkat pesanan, bukan hanya hitungan mentah). Saya tahu saya bisa melakukan ini di Jawa ketika saya mendapatkan hasil yang ditetapkan kembali, tapi saya bertanya-tanya apakah ada cara untuk menanganinya murni di SQL.
Memperbarui
Mengatur peringkat menambahkannya ke set hasil, tetapi tidak dipesan dengan benar:
mysql> SET @rank=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @rank:=@rank+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)
ORDER BY rank ASC
(memesan berdasarkan peringkat dalam urutan ASCending). Saya kira itulah yang Anda maksudkan tetapi tidak dipesan dengan benar