mysql中如何按分组添加序号

 更新时间:2023年06月19日 11:08:32   作者:javafg  
这篇文章主要介绍了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 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开始有序的数

执行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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mysql事项,视图,函数,触发器命令(详解)

    Mysql事项,视图,函数,触发器命令(详解)

    下面小编就为大家带来一篇Mysql事项,视图,函数,触发器命令(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • mysql 8.0.28 winx64.zip安装配置方法图文教程

    mysql 8.0.28 winx64.zip安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.28 winx64.zip安装配置方法图文教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • QT连接Mysql数据库的详细教程(亲测成功版)

    QT连接Mysql数据库的详细教程(亲测成功版)

    被Qt连接数据库折磨了三天之后终于连接成功了,记录一下希望对看到的人有所帮助,下面这篇文章主要给大家介绍了关于QT连接Mysql数据库的详细教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • mysql 存储过程的问题

    mysql 存储过程的问题

    最近我接触了一本php 与 mysql,老外写的一本书,书中有个tshirtshop网店代码,其中操作数据库的大多用的是mysql存储过程
    2009-06-06
  • MySQL服务无法启动的解决办法(亲测有效)

    MySQL服务无法启动的解决办法(亲测有效)

    用管理员身份打开cmd试图启动MySQL时出现服务无法启动并提示服务没有报错任何错误,所以本文小编给大家介绍了一个亲测有效的解决办法,需要的朋友可以参考下
    2023-12-12
  • MySQL查询性能优化武器之链路追踪

    MySQL查询性能优化武器之链路追踪

    这篇文章主要介绍了MySQL查询性能优化武器之链路追踪,optimizer trace优化器追踪,可以帮助我们查看优化器生成执行计划的整个过程,以及做出的各种决策,包括访问表的方法、各种开销计算、各种转换等
    2022-08-08
  • MySQL中CRUD操作及常用查询语法举例详解

    MySQL中CRUD操作及常用查询语法举例详解

    SQL是一种标准化的语言,它允许你在数据库上执行操作,如创建项目,查询内容,更新内容,并删除条目等操作,这篇文章主要介绍了MySQL中CRUD操作及常用查询语法的相关资料,需要的朋友可以参考下
    2025-10-10
  • 修改MySQL密码的四种方法总结(适合初学者!)

    修改MySQL密码的四种方法总结(适合初学者!)

    在日常使用数据库的过程中,难免会遇到需要修改账号密码的情景,比如密码太简单需要修改、密码过期需要修改、忘记密码需要修改等,下面这篇文章主要给大家介绍了关于修改MySQL密码的四种方法,介绍的方法非常适合初学者,需要的朋友可以参考下
    2022-08-08
  • MYSQL如何查看进程和kill进程

    MYSQL如何查看进程和kill进程

    这篇文章主要介绍了MYSQL如何查看进程和kill进程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • MySQL中union和order by同时使用的实现方法

    MySQL中union和order by同时使用的实现方法

    下面小编就为大家带来一篇MySQL中union和order by同时使用的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12

最新评论