zhyiwww
用平实的笔,记录编程路上的点点滴滴………
posts - 536,comments - 394,trackbacks - 0

如何用 Select 语句查询 oracle 表的前几条记录?

我想说一点,虽然 select   *   from   table   where   rownum< 你要查的记录条数,能够取出前几条记录,但是你如果要把排序后记录取前几条结果就不对,如下 SQL 语句  
  select   *   from   table   where   rownum<50   order   by  
字段名   desc 取出来的不是按照先排序后取前几名,而是先取出前几名再排序,大家有没有办法实现先排序再取前几名呢,我想这样的语句在实现应用中很有用,比如说要取前多少名这样的问题的实现就得用这种语句

 



|----------------------------------------------------------------------------------------|
                           版权声明  版权所有 @zhyiwww
            引用请注明来源 http://www.blogjava.net/zhyiwww   
|----------------------------------------------------------------------------------------|
posted on 2006-05-23 18:02 zhyiwww 阅读(14522) 评论(15)  编辑  收藏 所属分类: database

FeedBack:
# re: 如何用Select 语句查询oracle表的前几条记录?
2006-05-24 09:38 | superwar
select * from (select * from table order by 字段名 desc) where rownum<50   回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?
2006-05-26 19:21 | zhyiwww
谢谢您的回复!!
  回复  更多评论
  
# 在sql中用选择语句返回在各个区间内的记录行数????
2006-11-07 17:33 | 周威
我用一个事例来说明我的问题吧!比如在一个表中第一列自动编号,第二列为money类型,给定一个区间大小(如5)要返回分布在(0-5),(5-10)……各个区间的行数。
知道怎么用选择语句实现吗?  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?
2006-11-13 10:29 | zhyiwww
我看到了你的问题,不过,我现在也没有解决的办法.
我想你可能是在考虑使用此办法来实现分页吧.
现在我也在帮你找一些资料,看一下使用rowset能不能实现,如果我找到解决方案的话,我再给你回复.  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?
2006-11-25 20:33 | lawuu
可以解决,网上一箩筐,简单搜索即可  回复  更多评论
  
# w
2007-03-14 16:42 | 22
aa  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?
2007-03-29 16:58 | zhangmz
可是我的oracle是8i的,子查询里不能用order by
这可怎么办?没有办法了么?  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?
2008-04-27 17:29 | kuake
mysql 4.0以下不能用嵌套查询,我也在找办法。  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?
2008-07-03 15:14 | heh
"# 在sql中用选择语句返回在各个区间内的记录行数????2006-11-07 17:33 | 周威

我用一个事例来说明我的问题吧!比如在一个表中第一列自动编号,第二列为money类型,给定一个区间大小(如5)要返回分布在(0-5),(5-10)……各个区间的行数。
知道怎么用选择语句实现吗? 回复 更多评论"

用如下语句可以搞定:
select count(1) from table t group by round(t.money/5)  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?
2008-07-03 15:29 | heh
select round(t.money/5),count(1) from table t group by round(t.money/5) 当然要加round(t.money/5) 刚才那个有问题  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?[未登录]
2008-09-22 16:05 | test
@superwar
select * from (select * from table order by 字段名 desc) where rownum<50

这个方法是最好的  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?[未登录]
2011-09-28 18:20 | lk
额,楼主,你说的那个“ select * from table where rownum<50 order by 字段名 desc ,取出来的不是按照先排序后取前几名,而是先取出前几名再排序”有误。它查询出来的结果与“select * from (select * from table order by 字段名 desc) where rownum<50”一样。如果要先取出前几名再排序的话,应该写成这样“select*from( select * from table where rownum<50 ) order by 字段名 desc”。希望能对你有用,嘿嘿  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?
2012-03-09 16:39 | 11
11111111111111111  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?
2012-03-09 16:39 | 11
11111  回复  更多评论
  
# re: 如何用Select 语句查询oracle表的前几条记录?[未登录]
2012-11-19 16:39 | cheney
@superwar
这种做法不太好,当表数据量非常大时,你的sql就会执行死掉  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问