求一SQL语句,只返回结果集中的前N行

calfly 2007-09-13 11:59:17
表:

id class name
1 0701 张三
2 0702 王明
3 0703 刘若英
4 0702 张静初
5 0702 李太兰
6 0703 孔孝真

如上表,我要结果返回每一个班的前两名,怎么办?top好像只能在总的结果集取前N个记录,我的要分类。

...全文
376 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
calfly 2007-09-13
  • 打赏
  • 举报
回复
to 楼上各位:

这样的话,如果我有N个class,那个语句就要执行N次查询???
sp4 2007-09-13
  • 打赏
  • 举报
回复
SELECT * FROM TABLE AS PQS
WHERE ID IN (SELECT TOP 2 ID FROM TABLE WHERE CLASSID=PQS.CLASSID )
calfly 2007-09-13
  • 打赏
  • 举报
回复
to fengming2222() :
这个不重要,就按id排序吧
fengming2222 2007-09-13
  • 打赏
  • 举报
回复
楼主 那么怎么判断班级的前二名呢 你又没有分数
xueguang 2007-09-13
  • 打赏
  • 举报
回复
select * from tb a
where id in (select top 2 id from tb where class=a.class order by id) order by class,id
dobear_0922 2007-09-13
  • 打赏
  • 举报
回复
form-->from,笔误
select * from tb
where id in (select top 2 id from tb as t where class=tb.class)
dobear_0922 2007-09-13
  • 打赏
  • 举报
回复
select * from tb
where id in (select top 2 id form tb as t where class=tb.class)
calfly 2007-09-13
  • 打赏
  • 举报
回复
up~~~~~~
calfly 2007-09-13
  • 打赏
  • 举报
回复
这样不行,数据库太大,效率太低了。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧