需求是这样的(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