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中文网其他相关文章!