mysql之数据行序号

一、目标及效果预览

  • 实现查询数据生成行序号
    在这里插入图片描述
  • 实现分组查询数据生成行序号
    在这里插入图片描述

二、开发环境

  • 数据库:mysql8.x

三、代码实现

  • 初始化数据库
-- 创建t_book
create table t_book(
   id	int  	primary key not null auto_increment	comment	'主键'	,
	 book_name 	varchar(50)	not null	comment	'书名'	,
   book_cate  	varchar(50)	not null	comment	'分类'	
)ENGINE = InnoDB  CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '书库';

-- 插入数据
insert into t_book (book_name,book_cate) values ('java编程思想','java'),('effective java','java'),('python高性能编程','python'),('python编程','python');
  • 行序号: 核心思想借助mysql中的用户变量@,也是会话变量。(系统变量@@)
select 
	 (@rowNum :=  @rowNum + 1)	 as rowNum
	,b.id
	,b.book_name 
    ,b.book_cate
from  t_book as b 
	  ,(SELECT @rowNum:=0) as rn ;
  • 分组行序号: 核心思想是排序后,借助另一个变量记录分组
	select 
		 (@rowNum := case  when  @pre_parent_code=b.book_cate then @rowNum + 1 else 1 end )as rowNum
		,b.id
		,b.book_name 
		,b.book_cate
		, (@pre_parent_code:= b.book_cate ) as ppc
	from  t_book as b 
		,(SELECT @rowNum:=0, @pre_parent_code:='') as rn 
	order by b.book_cate

四、写在最后

此思路仅供参考,如有错误,感谢请指正讨论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值