最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
mysql中如何按分组添加序号
时间:2023-08-03 17:05:32 编辑:袖梨 来源:一聚教程网
这篇文章主要介绍了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
上面两种方法原理就是,事先定义一个变量,通过变量的递加以及虚拟表的联查达到生成序号列的目的
按分组添加序号
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 desc
mysql分组给字段设置序号进行排序
之前有一个给商户的员工进行排序的需求,结果我没有按照商户进行设置排序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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持一聚教程网。
相关文章
- 人们熟悉的寄居蟹属于以下哪种分类 神奇海洋11月21日答案 11-21
- 第五人格11.22共研服有什么更新 11月22日共研服更新内容介绍 11-21
- 原神恰斯卡怎么培养 11-21
- 无期迷途四星装束是谁 11-21
- 王者荣耀帝丹高中校服怎么获得 11-21
- 光遇姆明季后续版本怎么玩 11-21