MySQL低版本没有函数row_number() over的解决方案

最近在维护老项目时,需要对历史数据做分析取出分区数据中的第一条,无奈因为MySQL版本过低,无法使用函数row_number() over,苍了个天~
不过这点小事怎么可能难倒我们这群考古专家呢,在此分享一下解决方案。

主要原因是问题不解决要背锅啊,那能行吗~~~~~~~~
背锅虾

☆ 排查过程

1.使用函数查询数据时无法使用函数

无法使用
2.确认数据库版本为5.6,查阅资料后确认在MySQL 5.6及之前的版本中,没有直接的ROW_NUMBER()函数,这意味着无法使用OVER子句来对数据进行窗口排序和编号
在这里插入图片描述

3.转变思路,更换解决方案

☆ 解决方案

  • 先看一下解决方案的代码
select * from
 (
	select a.*,@rownum := @rownum+1 as rownum,IF(@fz=a.CUST_NO,@rank := @rank+1,@rank := 1) as rank,@fz := a.CUST_NO as fz_custNo from
		(select grading_result_key,CUST_NO,GRADING_DATE,OBJORGKEY,CUST_OPEN_DATE from td53_cust_result_uh  ORDER BY CUST_NO asc,GRADING_DATE ASC) a,
		(select @rownum := 0,@fz := null,@rank := 0) b
) c where rank=1 and CUST_OPEN_DATE <'2019-06-13' and OBJORGKEY>'2019-06-14' ;
  • 查询结果

在这里插入图片描述

  • 定义变量语句解析
## @rownum 记录查询结果的数据行号
## @fz 分组字段
## @rank 记录分组后,同一个组内的排序行号
select @rownum := 0,@fz := null,@rank := 0

今天你背锅了吗?不好意思我没有,O(∩_∩)O哈哈~~~~
唉吆
☆点击:精彩内容,了解更多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值