mysql中如何按分组添加序号

2023-12-01 0 129
目录

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

上面两种方法原理就是,事先定义一个变量,通过变量的递加以及虚拟表的联查达到生成序号列的目的

按分组添加序号

mysql中如何按分组添加序号

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 d
SET d.`sort` =
(
SELECT
CASE WHEN @A = d.`name`
THEN @D := @D + 1
ELSE
— 这里(@A := d.`name`) and 0 )的and,只是为了和0进行与运算,不影响和@D相加最后的结果
((@A := d.`name`) and 0 )+@D:= @C
END
)
ORDER BY d.`name`;

首先有一个样表,结构如下:

特意将sort打乱来模拟场景,现在需要按照name分组,使sort在每一组name中是从0开始有序的数

mysql中如何按分组添加序号

执行sql

OK

mysql中如何按分组添加序号

取分组后的前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

mysql中如何按分组添加序号

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Mysql mysql中如何按分组添加序号 https://www.u-9.cn/database/mysql/5001.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务