SQL分组取最大N条记录
做工作流时遇到的问题。
描述: 取到分组函数中更新时间最近的一条记录:
select * from t2
where concat(gid,col2) in (select concat(gid,max(col2)) from t2 group by gid);
开始准备用这种方法, gid –> group by 的条件, col2 –> 时间,缺点是只能取到最近的一条记录。最终选择这种:
select * from (
select * ,row_number() over ( partition by gid order by col2 desc) as cc from t2
) tt2 where tt2.cc<=1
其实有很多种方法,mark一下,以后学习:参考资料