在MySQL ORDER BY
查詢中選擇行位置
假設有一個MySQL表,包含兩列id
和name
,目標是在按name
列升序排序的表中檢索單行及其位置。期望的結果格式是一個包含id
、position
和name
列的表。
為此,您可以結合使用子查詢和使用者變數:
<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中文網其他相關文章!