获取分组后取某字段最大一条记录
方法一:(效率最高)
select * from test as a
where typeindex = (select max(b.typeindex)
from test as b
where a.type = b.type );
方法二:(效率次之)
select
a.* from test a,
(select type,max(typeindex) typeindex from test group by type) b
where a.type = b.type and a.typeindex = b.typeindex order by a.type
方法三:
select a.* from test a inner join (select type , max(typeindex) typeindex from test group by type) b on a.type = b.type and a.typeindex = b.typeindex order by a.type
方法四:(效率最低)
select * from
(
select *,ROW_NUMBER() OVER(PARTITION BY type ORDER BY typeindex DESC) as num
from test
) t
where t.num = 1
获取分组后取某字段最大一条记录(求每个类别中最大的值的列表)
最新推荐文章于 2024-07-22 02:59:37 发布
本文介绍了四种在SQL中高效获取分组后每组最大记录的方法,从高到低依次是:方法一通过子查询找出最大值,方法二是利用子查询和JOIN,方法三是使用窗口函数ROW_NUMBER(), 最后一种是方法四,但效率最低。适合数据库管理员和开发者了解不同场景下的优化技巧。
摘要由CSDN通过智能技术生成