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