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