亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

mysql中如何按分組添加序號

瀏覽:23日期:2023-09-05 20:32:01
目錄mysql按分組添加序號不按分組添加序號按分組添加序號mysql分組給字段設置序號進行排序分組update設置序號取分組后的前n名總結mysql按分組添加序號不按分組添加序號

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

上面兩種方法原理就是,事先定義一個變量,通過變量的遞加以及虛擬表的聯查達到生成序號列的目的

按分組添加序號

select -- rownum 判斷 @now_region_id是否和當前的region_id一樣,true:讓 @i+=1 false:重置@i (@i := case when @now_region_id=region_id then @i + 1 else 1 end ) rownum, -- 設置 @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 descmysql分組給字段設置序號進行排序

之前有一個給商戶的員工進行排序的需求,結果我沒有按照商戶進行設置排序sort值,后面所有的商戶的員工的sort值都混在一起了,只能寫數據庫腳本來進行糾正

最新版本v2.0

分組update設置序號

最新的sql如下:

UPDATE tb_desc SET sort = 0;-- @C這里想從幾開始 就從幾開始. @A表示上一行的名稱.SET @C = 0;SET @A = '';UPDATE tb_desc dSET d.`sort` = (SELECT CASE WHEN @A = d.`name`THEN @D := @D + 1ELSE-- 這里(@A := d.`name`) and 0 )的and,只是為了和0進行與運算,不影響和@D相加最后的結果 ((@A := d.`name`) and 0 )+@D:= @CEND)ORDER BY d.`name`;

首先有一個樣表,結構如下:

特意將sort打亂來模擬場景,現在需要按照name分組,使sort在每一組name中是從0開始有序的數

執行sql

OK

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

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 毛片视频免费 | 四虎黄色 | 久久久国产99久久国产首页 | 一级一级特黄女人精品毛片视频 | 欧美国产黄色 | 亚洲国产婷婷俺也色综合 | 九九99re在线视频精品免费 | 国产在线观看网站 | 中文字幕亚洲精品日韩精品 | 亚洲人成s大片在线播放 | 中国女人真人一级毛片 | 久热re在线视频精品免费 | www.亚洲综合 | 国产三级大片 | 亚洲午夜在线观看 | 一级黄视频 | 国产精品亚洲色图 | 国产亚洲精品成人a在线 | 免费网站在线看 | 日本一线a视频免费观看 | 深夜欧美福利视频在线观看 | 在线免费污视频 | 免费高清欧美大片在线观看 | 最近的免费中文字幕视频 | 亚洲色图男人天堂 | 中日韩视频在线观看 | 日韩精品国产一区 | 九一视频污 | 成人精品一区二区户外勾搭野战 | 91福利国产在线在线播放 | 国产精品jizz在线观看免费 | 露脸在线 | 国产va免费精品观看 | 黄色一级毛片看一级毛片 | 啪视频在线 | 久久综合久久久久 | 久久综合九九 | 亚洲免费成人 | 欧美成人精品第一区二区三区 | 国产成人无精品久久久 | 老年人一级特黄aa大片 |