文章详情页
Mysql update 分组递增 sql咨询
问题描述
表
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
相关文章:
1. javascript - 关于一段 for 循环代码执行顺序的问题2. docker 17.03 怎么配置 registry mirror ?3. docker网络端口映射,没有方便点的操作方法么?4. 求解答:访问不了虚拟服务器的问题?5. golang - 用IDE看docker源码时的小问题6. javascript - 静态页面引公共头尾文件,js怎么写吖?7. javascript - vue 前端渲染项目SEO8. java - 3个dao的数据根据请求参数选择一个映射到一个url上,怎么写比较好?9. javascript - 读取页面源码,页面中所有的换行都被当成<br/>读取出来 了,,求解应该怎么让它被正确的解析10. docker - 各位电脑上有多少个容器啊?容器一多,自己都搞混了,咋办呢?
排行榜