MySql中取出每个分组中的前N条记录

需求是这样的(CSDN上的一个问题):mysql中有个表:article(字段:id,type,date),type有1-10,10种类型。现在要用SQL找出每种类型中时间最新的前N个数据组成的集合。

这个问题应该有很多方法可以实现,下面就来说说在网上看到的一位高手的实现(用一条SQL语句实现的,个人感觉非常好,所以拿来和大家分享

select
	a1.*
from
	article a1
inner join(
		select
			a.type,
			a.date
		from
			article a
		left join article b on
			a.type = b.type
			and a.date <= b.date
		group by
			a.type,
			a.date
		having
			count( b.date )<= 2
	) b1 on
	a1.type = b1.type
	and a1.date = b1.date
order by
	a1.type,
	a1.date desc

猜你喜欢

转载自my.oschina.net/u/3238650/blog/1802515