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聚合与联合查询是数据库查询中常用的技术,它们能够从多个数据源中提取和组合数据,以获得有用的信息和结果,本文就来介绍下MySQL聚合与联合查询,感兴趣的可以了解一下
    2023-10-10
  • MySQL 配置文件my.cnf 例子最详细翻译

    MySQL 配置文件my.cnf 例子最详细翻译

    MySQL 配置文件my.cnf 例子最详细翻译,需要的朋友可以看看。
    2009-05-05
  • MySQL的事件调度器使用介绍

    MySQL的事件调度器使用介绍

    这篇文章主要介绍了MySQL的事件调度器使用介绍,本文讲解了事件调度器的开启、创建、修改、删除等操作的使用实例,需要的朋友可以参考下
    2015-06-06
  • SQL中from_unixtime函数的使用方法实例

    SQL中from_unixtime函数的使用方法实例

    在MySQL数据表设计中,时间字段一般都设计为时间戳格式的,开发人员去查看的时候就显得有点不方便,可以使用FROM_UNIXTIME转换成日期格式进行查看,下面这篇文章主要给大家介绍了关于SQL中from_unixtime函数的使用方法的相关资料,需要的朋友可以参考下
    2022-08-08
  • 基于Mysql+JavaSwing的超市商品管理系统设计与实现

    基于Mysql+JavaSwing的超市商品管理系统设计与实现

    本项目是使用Java swing开发,可实现超市管理系统商品列表信息查询、添加商品信息和修改商品管理以及删除商品信息和安装商品信息查询等功能。界面设计和功能比较简单基础、适合作为Java课设设计以及学习技术使用,需要的朋友可以参考一下
    2021-09-09
  • MYSQL出现" Client does not support authentication "的解决方法

    MYSQL出现" Client does not support authentication "的

    MYSQL出现" Client does not support authentication "的解决方法...
    2007-06-06
  • MySQL数据库之存储过程 procedure

    MySQL数据库之存储过程 procedure

    这篇文章主要介绍了MySQL数据库之存储过程 procedure,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • MySQL与PHP的基础与应用专题之数据查询语句

    MySQL与PHP的基础与应用专题之数据查询语句

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,本系列将带你掌握php与mysql的基础应用,本篇从数据查询语句开始
    2022-02-02
  • 以数据库字段分组显示数据的sql语句(详细介绍)

    以数据库字段分组显示数据的sql语句(详细介绍)

    本篇文章是对以数据库字段分组显示数据的sql语句进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL索引最左匹配原则实例详解

    MySQL索引最左匹配原则实例详解

    最左匹配原则就是指在联合索引中,如果你的SQL语句中用到了联合索引中的最左边的索引,那么这条SQL语句就可以利用这个联合索引去进行匹配,下面这篇文章主要给大家介绍了关于MySQL索引最左匹配原则的相关资料,需要的朋友可以参考下
    2022-09-09

最新评论