如何操作记录的id顺序?

w8biq8rn  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(382)

我正在尝试选择一组列表并以重新排序的数字方式获得结果。
例如

身份证名称

杰克
杰克
保罗
鲍勃
鲍勃
保罗
鲍勃
假设我选择name='bob'这样就得到了它的id号4,5,7
现在我希望结果是
按照这个顺序1,2,3。。。
而不是4,5,7。。。
因为这是鲍勃的第一,第二,第三,等等。。。
最简单的方法是什么?

c6ubokkw

c6ubokkw1#

在这里mysql变量可以完成这项工作。声明并初始化变量 @a = 0 ,指定一个递增的值并在查询中选择。查询应该如下所示:

SET @a = 0;
SELECT @a := @a + 1 AS id, name FROM table_name WHERE name = 'bob';
SET @a = 0;

最后,再次设定 @a = 0 .

o4tp2gmn

o4tp2gmn2#

如果您使用的是mysql 8,那么就可以使用window函数 rank() 和公共表表达式

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;

演示

相关问题