mysql中如何按分組添加序號
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
上面兩種方法原理就是,事先定義一個(gè)變量,通過變量的遞加以及虛擬表的聯(lián)查達(dá)到生成序號列的目的
按分組添加序號
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è)置序號進(jìn)行排序
之前有一個(gè)給商戶的員工進(jìn)行排序的需求,結(jié)果我沒有按照商戶進(jìn)行設(shè)置排序sort值,后面所有的商戶的員工的sort值都混在一起了,只能寫數(shù)據(jù)庫腳本來進(jìn)行糾正
最新版本v2.0
分組update設(shè)置序號
最新的sql如下:
UPDATE tb_desc SET sort = 0; -- @C這里想從幾開始 就從幾開始. @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打亂來模擬場景,現(xiàn)在需要按照name
分組,使sort在每一組name
中是從0開始有序的數(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中使用INSERT INTO語句更新多條數(shù)據(jù)的例子
這篇文章主要介紹了MySql中使用INSERT INTO語句更新多條數(shù)據(jù)的例子,MySQL的特有語法,需要的朋友可以參考下2014-06-06innodb_flush_method取值方法(實(shí)例講解)
下面小編就為大家?guī)硪黄猧nnodb_flush_method取值方法(實(shí)例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03MySQL存儲過程的創(chuàng)建使用以及實(shí)現(xiàn)數(shù)據(jù)快速插入
因最近想要測試一下MySQL百萬級數(shù)據(jù)處理過程,所以要一次對數(shù)據(jù)庫快速插入大量數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL存儲過程的創(chuàng)建使用以及實(shí)現(xiàn)數(shù)據(jù)快速插入的相關(guān)資料,需要的朋友可以參考下2023-03-03用percona-toolkit為MySQL收集系統(tǒng)和性能信息的教程
這篇文章主要介紹了用percona-toolkit為MySQL收集系統(tǒng)和性能信息的教程,可以輕松地將服務(wù)器基本信息錄入數(shù)據(jù)庫,需要的朋友可以參考下2015-11-11PHP使用mysqli擴(kuò)展連接MySQL數(shù)據(jù)庫
這篇文章主要介紹了PHP使用mysqli擴(kuò)展連接MySQL數(shù)據(jù)庫,需要的朋友可以參考下2014-08-08