在有序 MySQL 表中尋找行的排名
在 MySQL 資料庫操作中,您可能需要在按特定列排序後識別特定行及其在表中的排名。 以下是實現這一目標的有效策略:
方法一:使用變數初始化
此技術使用變數 (@rownum) 來維護行的排名。 下面的查詢顯示了它是如何運作的:
<code class="language-sql">SELECT x.id, x.rank, x.name FROM (SELECT t.id, t.name, @rownum := @rownum + 1 AS rank FROM TABLE t JOIN (SELECT @rownum := 0) r ORDER BY t.name) x WHERE x.name = 'Beta'</code>
方法 2:利用子查詢
另一種方法涉及使用子查詢來計算滿足特定條件的行。 範例查詢是:
<code class="language-sql">SELECT t.id, (SELECT COUNT(*) FROM TABLE x WHERE x.name < t.name) + 1 AS rank FROM TABLE t WHERE t.name = 'Beta'</code>
關鍵區別:第一個查詢提供唯一的排名值,即使對於排序列中具有相同值的行也是如此。第二個查詢可能會將相同的排名分配給具有綁定值的行。這兩種方法都可以有效地檢索行及其排名,而無需檢索整個表。
以上是如何在排序後檢索 MySQL 表中的行位置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!