sql: 怎样查询数值最大的五条记录

dubuxunmei 2004-12-05 04:11:03
表结构:
table_name:test
table_col: one numeric
two numeric

表数据:
one, two
31,21
10,21
56,23
54,32
99,54
87,64
47,15
70,31
请问怎样获取列one(从大到小)前3条记录,即
99,54
87,64
70,31
??



...全文
2495 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
_baal_ 2004-12-17
  • 打赏
  • 举报
回复
select * from test where rownum <=5 order by one desc这种是不行的,rownum<=5取出的是未排序前的头5条
select * from (select one from test order by one desc) where rownum<=5是正解
pbwl 2004-12-15
  • 打赏
  • 举报
回复
select * from test
where rownum <=5
order by one desc
overmind 2004-12-15
  • 打赏
  • 举报
回复
我觉得可以取出所有纪录,然后用程序判断。
yeye0823 2004-12-10
  • 打赏
  • 举报
回复
select * from (select one from test order by one desc) where rownum<=5;
hoterran 2004-12-10
  • 打赏
  • 举报
回复
顶以下
bati_mfl 2004-12-10
  • 打赏
  • 举报
回复
select * from (
select a.* ,row_number() over(order by one desc) rk from test a
)
where rk<=5
guangli_zhang 2004-12-10
  • 打赏
  • 举报
回复
select * from test
where rownum <=5
order by one desc
jackywood 2004-12-06
  • 打赏
  • 举报
回复
select * from (select * from test order by one desc, two desc) where rownum<4;
也可以达到目的

有那位高手可以说明这句和liuyi8903(西西)的sql那一个的效率更好吗?为什么?
谢谢指教
liuyi8903 2004-12-06
  • 打赏
  • 举报
回复
刚刚测试了一个大表.应该是select * from (select * from test order by one desc, two desc) where rownum<4 快些!
liuyi8903 2004-12-06
  • 打赏
  • 举报
回复
数据量小的情况下都差不多.
h2dog 2004-12-06
  • 打赏
  • 举报
回复
select * from
(select one from test order by one desc)
where rownum<=5
phant0m 2004-12-06
  • 打赏
  • 举报
回复
用 liuyi8903(西西) 的
liuyi8903 2004-12-05
  • 打赏
  • 举报
回复
oracle里面是不支持top的.
guanjm 2004-12-05
  • 打赏
  • 举报
回复
select top 5 one,two from test order by one desc
guanjm 2004-12-05
  • 打赏
  • 举报
回复
select top 3 one,two from test order by one desc
SQL2000里就这样就可以了
ORARichard 2004-12-05
  • 打赏
  • 举报
回复
create table tmp as select rowid no from test where rownum<6 order by desc;
select * from test,tmp where test.rowid=tmp.no;
drop table tmp;
liuyi8903 2004-12-05
  • 打赏
  • 举报
回复
五条
select * from (
select a.* ,row_number() over(order by one desc) rk from test a
)
where rk<=5
liuyi8903 2004-12-05
  • 打赏
  • 举报
回复
select * from (
select a.* ,row_number() over(order by one desc) rk from test a
)
where rk<=3;

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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