日期:2014-05-18  浏览次数:20567 次

求一查询sql语句,我想了好久
现数据库结果是这样
类别     数据
A         ooxx1
A         ooxx2
..
..
A         ooxxn
B         ooxx1
B         ooxx2
..
..
B         ooxxn
C         ooxx1
C         ooxx2
..
..
C         ooxxn
.
.
.

现在我想ABC类各出5条数据,现在我是每个类别查一次,觉得好没效率,有高手有一次查完的语句没,谢谢了



------解决方案--------------------
declare @t table(type varchar(4),data varchar(8))
insert into @t select 'A ', 'ooxx1 '
insert into @t select 'A ', 'ooxx2 '
insert into @t select 'A ', 'ooxxn '
insert into @t select 'B ', 'ooxx1 '
insert into @t select 'B ', 'ooxx2 '
insert into @t select 'B ', 'ooxxn '
insert into @t select 'C ', 'ooxx1 '
insert into @t select 'C ', 'ooxx2 '
insert into @t select 'C ', 'ooxxn '

--示例:每个type选择列出两条记录
select
t.*
from
@t t
where
t.data in(select top 2 data from @t where type=t.type order by data)


/*
type data
---- --------
A ooxx1
A ooxx2
B ooxx1
B ooxx2
C ooxx1
C ooxx2
*/
------解决方案--------------------
select a.*
from table a , (select 类别 from table group by 类别) b
where a.类别 = b.类别 and a.数据 in (select top 5 数据 from table where 类别 = b.类别)