有一个学生表st:
id name score
1 张三1 100
2 张三2 20
3 张三3 60
4 张三4 70
5 张三5 100
6 张三6 60
用一句sql实现:取出表中成绩最大的前四条记录。
多谢啦!
id name score
1 张三1 100
2 张三2 20
3 张三3 60
4 张三4 70
5 张三5 100
6 张三6 60
用一句sql实现:取出表中成绩最大的前四条记录。
多谢啦!
解决方案 »
- 在使用merge时出现ORA-30926: 无法在源表中获得一组稳定的行
- 关于create directory的问题
- 国内外数据同步
- 数据库每天凌晨0点自动备份,到早上8点数据库夸了,那0点到8点的数据就恢复不了了吧?
- 北京思源培训中心怎么样?师资如何?
- oracle版本兼容性問題
- toad 导入txt ,部分数据导入不进去
- 2000下,每个数据文件最大能给多少空间?
- 如何实现在表中插入一个字段且该字段的值取自另外一个表
- oracle中为什么调用存储过程在表中插入一条数据时,实际插入了两条
- 怎样配置可以使Oracle数据库同时被多个实例打开?
- 使用sqlplus启动数据库时,使用sysdba角色连接错误问题
select * from (select *,rownum rn from student order by score desc)stu where stu.rn<5;
order by score desc) where IDX < 5
(select * from st order by score desc)
where rownum < 5;你试试看!
ORACLE都是用ROWNUM来取前几条的
不过最后给出的链接又对了
from
(select * from st order by score desc)
where rownum<=5
from
(select * from st order by score desc)
where rownum <=4
from
(SELECT id,name,score,ROW_NUMBER() OVER (ORDER BY score desc) AS rn FROM st)
where rn<=4
order by rn
drop table ceshi
create table ceshi (a number(10),b varchar2(10),c number(5));
insert into
ceshi
values(1,'张三1',100);
insert into
ceshi
values(1,'张三2',20);
insert into
ceshi
values(1,'张三3',60);
insert into
ceshi
values(1,'张三4',70);
insert into
ceshi
values(1,'张三5',100);
insert into
ceshi
values(1,'张三6',60);
select a,b,c,rownum from ceshi
where rownum<=4
order by c desc
SELECT * FROM(
SELECT t.id,t.name,t.score,
row_number()over(ORDER BY t.score DESC) rn
FROM zheng t) a
WHERE a.rn<=4
select b.*,rownum from (select t.* from student t
order by score desc)b where rownum<5;
你没去试过吧
这种写法只有在SCORE是主键的情况下才会结果正确,否则的话,会给出错误的答案
( select * from st order by score desc)
where rownum < 5
select * from (select t.*,rank() over(partition by id order by score desc ) rk from student t) tmp where rk<6