按name分组取最大的两个(N个)val
select a.* from tb a where 2 > (select count(*) from tb where name = a.name and val > a.val ) order by a.name,a.val

如果还有其他的条件外部和内部的条件都要添上,内部的条件要放在name=a.name的前面才有效,不知道这是为什么

参考资料http://www.jb51.net/article/31590.htm

Logo

更多推荐