mysql中如何按分組添加序號(hào)
mysql按分組添加序號(hào)
不按分組添加序號(hào)

1.第一種
select (@i := @i + 1) as rownum,b.* from table b, (SELECT @i := 0) as a order by region_id desc
2.第二種
set @i=0; select @i:=@i+1 as rownum, b.* from table b order by region_id desc
上面兩種方法原理就是,事先定義一個(gè)變量,通過(guò)變量的遞加以及虛擬表的聯(lián)查達(dá)到生成序號(hào)列的目的
按分組添加序號(hào)

select -- rownum 判斷 @now_region_id是否和當(dāng)前的region_id一樣,true:讓 @i+=1 false:重置@i (@i := case when @now_region_id=region_id then @i + 1 else 1 end ) rownum, -- 設(shè)置 @now_region_id等于region_id (@now_region_id:=region_id), b.*, fromtable b, (SELECT @i := 0, @now_region_id:='') as a order by region_id desc
mysql分組給字段設(shè)置序號(hào)進(jìn)行排序
之前有一個(gè)給商戶的員工進(jìn)行排序的需求,結(jié)果我沒(méi)有按照商戶進(jìn)行設(shè)置排序sort值,后面所有的商戶的員工的sort值都混在一起了,只能寫(xiě)數(shù)據(jù)庫(kù)腳本來(lái)進(jìn)行糾正
最新版本v2.0
分組update設(shè)置序號(hào)
最新的sql如下:
UPDATE tb_desc SET sort = 0; -- @C這里想從幾開(kāi)始 就從幾開(kāi)始. @A表示上一行的名稱. SET @C = 0;SET @A = ''; UPDATE tb_desc d SET d.`sort` = ( SELECT CASE WHEN @A = d.`name` THEN @D := @D + 1 ELSE -- 這里(@A := d.`name`) and 0 )的and,只是為了和0進(jìn)行與運(yùn)算,不影響和@D相加最后的結(jié)果 ((@A := d.`name`) and 0 )+@D:= @C END ) ORDER BY d.`name`;
首先有一個(gè)樣表,結(jié)構(gòu)如下:
特意將sort打亂來(lái)模擬場(chǎng)景,現(xiàn)在需要按照name分組,使sort在每一組name中是從0開(kāi)始有序的數(shù)

執(zhí)行sql
OK

取分組后的前n名
SET @rank:=0; SELECT * FROM (SELECT a.*, IF(@tmp=deptno,@rank:=@rank + 1,@rank:=1) AS group_id, @tmp:=deptno AS tmp FROM employee a ORDER BY deptno,sal DESC) b WHERE b.group_id<=5

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mysql事項(xiàng),視圖,函數(shù),觸發(fā)器命令(詳解)
下面小編就為大家?guī)?lái)一篇Mysql事項(xiàng),視圖,函數(shù),觸發(fā)器命令(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
mysql?8.0.28?winx64.zip安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql?8.0.28?winx64.zip安裝配置方法圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
QT連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)教程(親測(cè)成功版)
被Qt連接數(shù)據(jù)庫(kù)折磨了三天之后終于連接成功了,記錄一下希望對(duì)看到的人有所幫助,下面這篇文章主要給大家介紹了關(guān)于QT連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
MySQL服務(wù)無(wú)法啟動(dòng)的解決辦法(親測(cè)有效)
用管理員身份打開(kāi)cmd試圖啟動(dòng)MySQL時(shí)出現(xiàn)服務(wù)無(wú)法啟動(dòng)并提示服務(wù)沒(méi)有報(bào)錯(cuò)任何錯(cuò)誤,所以本文小編給大家介紹了一個(gè)親測(cè)有效的解決辦法,需要的朋友可以參考下2023-12-12
修改MySQL密碼的四種方法總結(jié)(適合初學(xué)者!)
在日常使用數(shù)據(jù)庫(kù)的過(guò)程中,難免會(huì)遇到需要修改賬號(hào)密碼的情景,比如密碼太簡(jiǎn)單需要修改、密碼過(guò)期需要修改、忘記密碼需要修改等,下面這篇文章主要給大家介紹了關(guān)于修改MySQL密碼的四種方法,介紹的方法非常適合初學(xué)者,需要的朋友可以參考下2022-08-08
MySQL中union和order by同時(shí)使用的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇MySQL中union和order by同時(shí)使用的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12

