在oracle中如何实现像sql中top 5 *这个功能?

SkidRow133 2004-03-29 05:31:54
我查询出50条纪录,我只想要最前面的5条纪录(按某个字段排好序的)?
...全文
4018 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
梦想成了相扑 2004-04-08
  • 打赏
  • 举报
回复
剛弄明白,來發一貼:

-- 我們想把最先進入公司的5個人找出來
SELECT * FROM emp WHERE ROWNUM <= 5 ORDER BY hiredate;

SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
WHERE ROWNUM <= 5;

-- 我們想把最先進入公司的6~10個人找出來!!!!!!!!!!!!!!
SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
WHERE ROWNUM <= 10
MINUS
SELECT * FROM (SELECT * FROM emp ORDER BY hiredate)
WHERE ROWNUM <= 5;

Good luck!!
beckhambobo 2004-03-29
  • 打赏
  • 举报
回复
select * from (select rownum rm,a.* from table_name a order by col_name where rownum<n ) where rm>m;
skystar99047 2004-03-29
  • 打赏
  • 举报
回复
select * from(select * from table_name order by col_name) where rownum<6;
welyngj 2004-03-29
  • 打赏
  • 举报
回复
5-9的值
select * from
(select *,rownum num from
(select * from tbname order by colname) a
where rownum<10) b
where num>4;


SkidRow133 2004-03-29
  • 打赏
  • 举报
回复
如果要中间的纪录的话要怎样才行?
welyngj 2004-03-29
  • 打赏
  • 举报
回复
rownum是随着结果集生成的,一旦生成,就不会变化了;
同时,生成的结果是依次递加的,没有1就永远不会有2!
rownum 是在 查询集合产生的过程中产生的伪列,并且如果where条件中存在 rownum 条件的话,则:
1: 假如 判定条件是常量,则:
只能 rownum = 1, <= 大于1 的自然数, = 大于1 的数是没有结果的, 大于一个数也是没有结果的
即 当出现一个 rownum 不满足条件的时候则 查询结束
SkidRow133 2004-03-29
  • 打赏
  • 举报
回复
为什么只能rownum<
如果用到rownum > 就出错?
welyngj 2004-03-29
  • 打赏
  • 举报
回复
oracle没有top的用法。
legumer 2004-03-29
  • 打赏
  • 举报
回复
oracle应该也有top这个用法的。
bzszp 2004-03-29
  • 打赏
  • 举报
回复
select * from (select * from tbname order by colname)
where rownum<6;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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