with ordered_data as (
select *,
rank() over (partition by name order by id asc ) rnk
from your_table
order by rnk
)
select * from ordered_data where name = 'bob';
或者,如果您使用的是较旧的版本,那么可以使用相关查询来获取排名
select a.id,a.name,
(select count(*)
from your_table
where name= a.name
and id <= a.id) rnk
from your_table a
where a.name = 'bob'
order by a.id;
2条答案
按热度按时间c6ubokkw1#
在这里mysql变量可以完成这项工作。声明并初始化变量
@a = 0
,指定一个递增的值并在查询中选择。查询应该如下所示:最后,再次设定
@a = 0
.o4tp2gmn2#
如果您使用的是mysql 8,那么就可以使用window函数
rank()
和公共表表达式或者,如果您使用的是较旧的版本,那么可以使用相关查询来获取排名
演示