mysql里面如何获取行号_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 ordercount

FROM orders

GROUP BY itemID ORDER BY ordercount DESC;

这给了我在表中的每个itemID的计数,像这样:

+--------+------------+

| itemID | ordercount |

+--------+------------+

| 388 | 3 |

| 234 | 2 |

| 3432 | 1 |

| 693 | 1 |

| 3459 | 1 |

+--------+------------+

我想得到行号,所以我可以告诉itemID = 388是第一行,234是第二,等(基本上是顺序的排名,而不只是一个原始计数)。我知道我可以做到这一点,当我得到结果集回来,但我想知道是否有一种方法来处理它纯粹在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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值