SQL SERVER 查询特定的前几条数据

时间:2023-03-09 17:22:08
SQL SERVER 查询特定的前几条数据
1. 使用MS SQL Server 2008; 2. 数据库内容如下:

insert into xuexi1 values('张三0', '数学', 98 )

insert into xuexi1 values('张三1', '数学',912 )

insert into xuexi1 values('张三2', '数学', 344 )

insert into xuexi1 values('张三3', '数学',546 )

insert into xuexi1 values('1张三4', '数学1', 498 )

insert into xuexi1 values('1张三5', '数学1', 198 )

insert into xuexi1 values('1张三6', '数学1', 983 )

insert into xuexi1 values('1张三7', '数学1', 982 )

insert into xuexi1 values('2张三4', '语文', 49 )

insert into xuexi1 values('2张三5', '语文', 19 )

insert into xuexi1 values('2张三6', '语文', 93 )

insert into xuexi1 values('2张三7', '语文', 92 )

3. 要查询的结果:每一门课程的前2名
忘了说了,刚才想问能不能只用一条语句?科目很多,如果这样查询觉得可能慢
select a.xingming,a.kemu,a.fenshu 
from xuexi1 a
where a.fenshu in 
(
SELECT top 2 fenshu
FROM xuexi1
WHERE
kemu=a.kemu
order by fenshu desc
)
字段名和表名都用拼音表示的,拼一下就知道是啥了,再一个,可能会报错,你再自己稍微修改一下吧,反正大概就这个意思