您的位置:首页技术文章
文章详情页

Mysql update 分组递增 sql咨询

【字号: 日期:2022-06-14 11:40:57浏览:14作者:猪猪

问题描述

idlevelsort_num110210320420520630730830930

要求得到

idlevelsort_num111212321422523631732833934

即页面的展示顺序如下

level1

1

2

level2

1

2

3

level3

1

2

3

4

目前的sql

set @index:=0; update t set sort_num = (@index:=@index+1) where level = 1 order by id;set @index:=0; update t set sort_num = (@index:=@index+1) where level = 2 order by id;set @index:=0; update t set sort_num = (@index:=@index+1) where level = 3 order by id;

不知有没更简洁的sql可以实现上述的需求?

补充

在线sql

问题解答

回答1:

如果只是为了页面展示,不需要更新表的数据吧。可以试试下面的sql

select level, @sort_num:=if(@prev_level=t1.level, @sort_num+1, 1)from (select * from t order by id) t1, (SELECT @sort_num:=1, @prev_level:=NULL) varorder by id

相关文章: