MySQL 获取排列序号

后端框架:ssm

前端框架:layUi

问题:做统计时、需要把获取到数据的序号拿到、前端展示时、根据 layUi 自带的排序则可。导出成 excel 的时候也要显示序号、由于统一用 ExcelField 导出数据、只能在原有的 SQL 上拿到序号。

创建表就不留有 SQL 了、随意创建一张表就可以了。

 

解析:

@  后面跟个名字,表示自定义变量。

:=   赋值的意思

自定义一个变量、每次查出数据候进行加 1 ,以此来作为数据源的序号。

 

SQL:

SELECT
	@rank :=@rank + 1 AS 'num',
	a.count AS 'count',
	a.NAME AS 'name',
	a.officeName AS 'officeName'
FROM(
	SELECT
		count(a.id) AS 'count',
		u.NAME AS 'name',
		o.NAME AS 'officeName'
	FROM 
        crm_client a
		LEFT JOIN sys_user u ON u.id = a.user_id
		LEFT JOIN sys_office o ON u.office_id = o.id
	WHERE
		a.del_flag = '0'AND a.user_id IS NOT NULL
	GROUP BY a.user_id
	ORDER BY count DESC,a.NAME DESC
) a,
(SELECT @rank := 0) b

因为有排序问题、如果直接将 rank 定义在源数据中、按照自定义排序的话、获取序号的会根据自定义的排序产生乱序、排序完候在重新取出来时、会按照查询出的数据源进行顺序排序。

 

关于:

SET @rank = 0; 作用是一致的、但是放在 MyBaits 中貌似不识别。还是建议使用上面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值