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中文網其他相關文章!