日期:2014-05-19  浏览次数:20447 次

聚合列表问题
如类型表   t:
id             name
-------------------  
1               aa
2               bb


数据表   D:
id           name         type
---------------------
1             ab             1
2             ac             1
3             ae             1
4             af             1
5             bc             2
6             ba             2
7             bd             2


如何获得以下结果(每个类型内容只显示两个):
t.name         name
---------------------
aa                 af
aa                 ae
bb                 bd
bb                 ba

如何获得以下结果(显示类型名称到内容中,并每个类型内容只显示两个):
aa                 1
aa                 af
aa                 ae
bb                 2
bb                 bd
bb                 ba

------解决方案--------------------
select D.name,t.name FROM D,t,
(select D.type,min(id) s_id FROM D,(select type,min(id) as min_id from D group by type) tmpD WHERE D.type=tmpD.TYPE AND D.id> tmpD.min_id GROUP BY D.type) S
where D.type=t.id and D.type=S.type and D.id <=S.s_id