MySQL-獲取選擇的行號如果對項進行排序,我可以運行SELECT語句并獲取行號嗎?我有一張這樣的桌子:mysql> describe orders;+-------------+---------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------+---------------------+------+-----+---------+----------------+| orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment || itemID | bigint(20) unsigned | NO | | NULL | |+-------------+---------------------+------+-----+---------+----------------+然后,我可以運行這個查詢,按ID獲取訂單數量:SELECT itemID, COUNT(*) as ordercountFROM ordersGROUP BY itemID ORDER BY ordercount DESC;這給了我一個數字itemID在這張桌子上:+--------+------------+| itemID | ordercount |+--------+------------+| 388 | 3 || 234 | 2 || 3432 | 1 || 693 | 1 || 3459 | 1 |+--------+------------+我也想要行號,所以我可以看出來itemID=388是第一排,234是第二位,等等(本質上是對訂單的排序,而不僅僅是原始的計數)。當我得到結果集時,我知道我可以用Java來完成這個任務,但是我想知道是否有一種方法可以完全在SQL中處理它。更新設置級別會將其添加到結果集,但沒有正確排序: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)
MySQL-獲取選擇的行號
慕沐林林
2019-06-15 10:27:14