 
                        表
| id | level | sort_num | 
|---|---|---|
| 1 | 1 | 0 | 
| 2 | 1 | 0 | 
| 3 | 2 | 0 | 
| 4 | 2 | 0 | 
| 5 | 2 | 0 | 
| 6 | 3 | 0 | 
| 7 | 3 | 0 | 
| 8 | 3 | 0 | 
| 9 | 3 | 0 | 
要求得到
| id | level | sort_num | 
|---|---|---|
| 1 | 1 | 1 | 
| 2 | 1 | 2 | 
| 3 | 2 | 1 | 
| 4 | 2 | 2 | 
| 5 | 2 | 3 | 
| 6 | 3 | 1 | 
| 7 | 3 | 2 | 
| 8 | 3 | 3 | 
| 9 | 3 | 4 | 
即页面的展示顺序如下
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
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
如果只是为了页面展示,不需要更新表的数据吧。可以试试下面的sql