MySQL:从排序的SELECT结果中检索行号
问题:
如何在MySQL的SELECT语句中获取排序项的行号?
背景:
考虑一个名为'orders'的表,包含列'orderID'和'itemID'。如下所示的查询按'itemID'计算订单数量:
<code class="language-sql">SELECT itemID, COUNT(*) as ordercount FROM orders GROUP BY itemID ORDER BY ordercount DESC;</code>
此查询返回项目计数,但不提供行号。
解决方案:
要检索行号,请使用以下技术:
<code class="language-sql">SET @rank=0;</code>
<code class="language-sql">SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount FROM orders GROUP BY itemID ORDER BY ordercount DESC;</code>
<code class="language-sql">SELECT @rank;</code>
示例:
以下查询返回行号和项目计数:
<code class="language-sql">SET @rank=0; SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount FROM orders GROUP BY itemID ORDER BY ordercount DESC; SELECT @rank;</code>
输出:
<code>1 | 388 | 3 2 | 234 | 2 3 | 693 | 1 4 | 3432 | 1 5 | 3459 | 1</code>
最终行计数为5。
以上是如何在 MySQL 中向排序的 SELECT 结果添加行号?的详细内容。更多信息请关注PHP中文网其他相关文章!