Mysql update 分組遞增 sql咨詢(xún)
問(wèn)題描述
表
idlevelsort_num110210320420520630730830930要求得到
idlevelsort_num111212321422523631732833934即頁(yè)面的展示順序如下
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;
不知有沒(méi)更簡(jiǎn)潔的sql可以實(shí)現(xiàn)上述的需求?
補(bǔ)充在線(xiàn)sql
問(wèn)題解答
回答1:如果只是為了頁(yè)面展示,不需要更新表的數(shù)據(jù)吧。可以試試下面的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
相關(guān)文章:
1. java - spring boot 如何打包成asp.net core 那種獨(dú)立應(yīng)用?2. java - 在用戶(hù)不登錄的情況下,用戶(hù)如何添加保存到購(gòu)物車(chē)?3. javascript - webpack 分割加載代碼后,react 界面不更新4. 安全性測(cè)試 - nodejs中如何防m(xù)ySQL注入5. html - eclipse 標(biāo)簽錯(cuò)誤6. javascript - nginx反向代理靜態(tài)資源403錯(cuò)誤?7. python文檔怎么查看?8. javascript - 關(guān)于apply()與call()的問(wèn)題9. datetime - Python如何獲取當(dāng)前時(shí)間10. android - SwipeRefreshLayout5.0以下不兼容
