大体场景:一个客户有多次申请时,如何取每个客户的第一次申请记录,以及指定的第n次记录?
以及如何针对客户的每次申请按指定规则排序?
一、取group by后第1条记录
表先limit,再group by,默认会展示分组后的第一条记录
注意:
1、limit 必须得有,否则跑出来的就不都是第一条记录,limit可大于表的记录条数
2、order by 默认升序,若降序则用 order by 字段名 desc
具体操作如下:
select t.客户名,t.其他字段
from ( select * from table order by 申请时间 limit 1000000 ) as t
group by t.客户名
二、group by后 排序,标记序,及取第n笔
操作方法:
按客户名分组,按时间输出次序:
select
if (@paixuyiju=a.客户名,@rank1:=@rank1+1,@rank1:=1) as xu1,
@paixuyiju:=a.客户名 AS paixuyiju,
a.*
from (select @paixuyiju:=null,@rank1:=0) r,
(select 客户名,时间,其他字段 from table
order by 客户名,时间) a
字段[xu1]就是想要结果次序;想要取第n笔,随意where即可
方法解析:
1、首先要了解查询顺序:
2、了解对变量赋值的用法
“@”后面跟变量名,可用“:=”对变量进行赋值,如下对变量xu1,xu2赋值
3、了解如何建立自增序,
如下,因先查询from,故先对xu1,xu2赋值0,再select时做+1递增,xu1自增,xu2条件自增
4、实操,分组后排序,如下,需要建一个排序依据的辅助字段
此方法逻辑,与excel操作类似 EXCEL如何分组排序,如何标记序,如何取指定的第n笔?_星辰大海可还好的博客-CSDN博客
本文含有隐藏内容,请 开通VIP 后查看