首頁 >資料庫 >mysql教程 >如何取得 MySQL ORDER BY 查詢中特定條目的行位置?

如何取得 MySQL ORDER BY 查詢中特定條目的行位置?

DDD
DDD原創
2025-01-18 02:21:08638瀏覽

How to Get the Row Position of a Specific Entry in a MySQL `ORDER BY` Query?

在MySQL ORDER BY 查詢中選擇行位置

假設有一個MySQL表,包含兩列idname,目標是在按name列升序排序的表中檢索單行及其位置。期望的結果格式是一個包含idpositionname列的表。

為此,您可以結合使用子查詢和使用者變數:

<code class="language-sql">SELECT x.id,
       x.position,
       x.name
  FROM (SELECT t.id,
               t.name,
               @rownum := @rownum + 1 AS position
          FROM TABLE t
          JOIN (SELECT @rownum := 0) r
      ORDER BY t.name) x
 WHERE x.name = 'Beta';</code>

在這個查詢中,子查詢根據name值的順序計算每行的位置。使用者定義的變數@rownum用於分配唯一位置。然後,主查詢過濾結果以取得所需的name值「Beta」。

或者,以下查詢提供解決同名情況的排名:

<code class="language-sql">SELECT t.id,
       (SELECT COUNT(*)
          FROM TABLE x
         WHERE x.name <= t.name) AS position,
       t.name
  FROM TABLE t
 WHERE t.name = 'Beta';</code>

此查詢透過計算name值小於或等於當前行name值的行的數量來計算位置。這兩種方法都提供了確定排序結果集中行位置的方法。

以上是如何取得 MySQL ORDER BY 查詢中特定條目的行位置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn