mysql 使用group by分组的同时进行组内排序操作(根据某一个字段分组而不是id顺序)(按照add_time由前到后)

本文详细介绍了一种SQL查询技巧,通过使用group_by对std_id和add_time字段进行分组,然后按照std_id再次分组,实现了对每组最早或最近数据的查询。此方法适用于需要按特定条件筛选数据的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设:分组字段 :std_id        排序字段:add_time

过程:

1、首先将数据抽取出来形成单独一张表,并使用group_by 对两个字段整体分组  group by std_id,add_time

2、然后再对查询出来的数据按照分组字段std_id分组   group by std_id  

sql: 

select cs.id,cs.std_id,cs.add_time,FROM_UNIXTIME(cs.add_time)  as new_time 
                   from school_info as si join school_place as sp on sp.sch_id=si.id 
                   join class_info as ci on ci.place_id=sp.id 
                   join class_std as cs on cs.cls_id=ci.id 
                   where si.id=1045 and sp.is_del=0 and ci.is_del=0  group by cs.std_id,cs.add_time ) AS new group by new.std_id

 

 

注:这里是按照add_time正序查询的,即查询的是每一组的时间最早的数据,如果查询的是最近的一条数据,自己试着调试一下即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值