首页 > 解决方案 > 如何使用 MySQL 获取元素的行号?

问题描述

如何获取元素的行号?

示例数据

id   name   age
8347 Jacob  65
3645 Jerico 67
3243 Michel 34

如何获得 67 岁的行号?行号 2

标签: mysqldatabasesql-order-bywhere-clausewindow-functions

解决方案


这是一个常见的误解:sql 表表示无序的行集。数据中没有固有的顺序。如果不使用order by子句,则返回行的顺序是不确定的。

因此,首先,您需要订购您的记录。假设您要对它们进行排序id(它似乎是一个独特的列,这对排序很有好处,因为它可以避免平局)。如果您正在运行 MySQL 8.0,则可以使用row_number()对记录进行排名:

select *
from (select t.*, row_number() over(order by id) rn from mytable t) t
where age = 67

这条年龄为 67 的记录将被分配第 2 行,因为这是它在数据按 排序时的位置id。如果您有几条年龄为 67 岁的记录,它们都将显示在结果集中,以及它们关联的行号。


推荐阅读