MySQL排序後高效率取得行位置
在MySQL表中,根據特定列(例如'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>
此查詢使用子查詢根據ORDER BY子句分配行位置,然後過濾所需的行'Beta'。位置使用@rownum使用者變數計算,變數會為每一行自動遞增。
或者,您可以使用以下查詢來不同地處理並列:
<code class="language-sql">SELECT t.id, (SELECT COUNT(*) FROM TABLE x WHERE x.name < t.name) + 1 AS position FROM TABLE t WHERE t.name = 'Beta'</code>
此方法對並列行傳回相同的位置,可能與第一個查詢提供不同的結果集。
以上是MySQL排序後如何有效率地查找行位置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!