本文主要是介绍mysql 实现类似row_num以及分组排序取数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.实现row_num
首先需要设置两个变量
set @row_number:=0; --根据某字段的判断结果生成row_number序号
set @xxxx_no:= 0; --用于获取每行xxxx列数据,然后与前面一行的xxxx数据进行对比,若相同则自增1,否则为1
下面的例子按照xxxx作为类似分组条件,etl_time作为排序字段
select @row_number:= case when @xxxx = s.xxxxthen @row_number + 1else 1end as num, @xxxx:=s.xxxx as xxxx_lin, s.xxxx, s.etl_time
from t_xxxx_d s ,(select @orw_number:=0,@xxxx:=0) t
order by s.etl_time,xxxx_lin;
结果:
xxxx字段可以搞个组合条件,但是排序的后num有点奇怪,暂时没搞明白
2.分组排序取第一条
这种方式更简单更好理解
select t1.* from t_xxxx_d t1 join
(select xxx1,xxx2,max(etl_time) as et from t_xxxx_d group by xxx1,xxx2 ) t2on t1.xxx1 = t2.xxx1and t1.xxx2=t2.xxx2and t1.etl_time= t2.et
group by 后面也可以用order by limit 取数,例如分组后count总数排序,按照count值排序 limit取前10
这篇关于mysql 实现类似row_num以及分组排序取数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!