关于选择记录的sql语句

请教高手,用sql语句怎么取每个类别中的几条记录?比如,有A、B、C类,我想每个类取2条记录(但不一定是2条)。补充:选1条的就不用说了,用groupby就可以,要的是多... 请教高手,
用sql语句怎么取每个类别中的几条记录?
比如,有A、B、C类,我想每个类取2条记录(但不一定是2条)。
补充:选1条的就不用说了,用group by就可以,要的是多条记录的。
id type
1 A
2 B
3 A
4 A
5 C
……
请多多指点。
晕,三个类只是泛指,如果有十几个类,那岂不是union all十几次?这方法不好吧。

ytbelwxg 的也不行,那只能选最前的两条,而不是每个类别两次。
展开
 我来答
marser_clark
2009-08-22 · TA获得超过257个赞
知道小有建树答主
回答量:314
采纳率:0%
帮助的人:139万
展开全部
有种解决办法,但是效率可能不是很好。我就只说方法,不写式子了。
总的思路是用循环和临时表来做。
1:查询出共有多少种类别,但不要重复。(循环次数)
2:每次循环查出一种类别的前两条记录,然后插入到临时表中。
最后临时表的内容就是你要的结果。
如果思路开阔的话,想想别的办法,或者把我上面的思路稍微修改一下。
lzp4881
2009-08-22 · TA获得超过2394个赞
知道大有可为答主
回答量:2825
采纳率:0%
帮助的人:2995万
展开全部
select top 2 * from table where type='A'
union
select top 2 * from table where type='B'
union
select top 2 * from table where type='C'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华夏日长兴
2009-08-22 · TA获得超过9592个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3711万
展开全部
select top 2 id,type from table where type in (select distinct type from table)

以上,希望对你有所帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2c1f62e
2009-08-22 · TA获得超过1330个赞
知道小有建树答主
回答量:471
采纳率:0%
帮助的人:404万
展开全部
假设表名为table1,将以下语句全选后复制粘贴,F5运行即可。
@recordcount 变量为每个类选取几条记录,返回表ls_table1,可用 select * from ls_table1 察看结果。
如果需要常用,建议改写为存储过程或者表函数,调用更方便一些。
如果你只想要一条查询语句解决的话,不想这么复杂的话,除了多用几个union all之外,别无他法。

delcare @recordcount int, @currentcount

set @recordcount = 2

set @currentcount = 0

if exists (select * from sysobjects where type = 'u' and name = 'ls_table1' ) drop table ls_table1

select * into ls_table1 from table1

while @currentcount < @recordcount
begin
insert ls_table1 select a.* from table1 a join (select type, min(id) as id into ls_table1 from table1 c where not exists (select * from ls_table1 c where c.id = d.id ) group by type ) b on a.id = b.id

select @currentcount = @currentcount + 1
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
csuxp2008
2009-08-22 · TA获得超过6485个赞
知道大有可为答主
回答量:4704
采纳率:50%
帮助的人:2459万
展开全部
如果是oracle,可以这么写

select id,type
from
(
select id,type
row_number() over(partition by type order by id desc) rn
from table1
)
where rn<=2; --取每个分类的一条就改成rn<=1,如果是3条,就改成rn<=3...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式