select * from tablename where rowno<=10 order by fdname是不是? 呵呵

解决方案 »

  1.   

    rowno 应为 rownum. 
      

  2.   

    oracle中有top N的功能。select F from (select F from Table order by F) where rownum<=10
      

  3.   

    nononono这回错了。难得啊。:-)
      

  4.   

    呵呵
    我没用过 Oracle, 就这 rownum 还是在这里看来的。请教:rownum 是指记录的物理顺序号还是指记录在数据集中的顺序号,或者是其它? 我写的对吗?为什么?讲解一下如何?
      

  5.   

    应该是数据集中的顺序号吧。我的答案可是oracle的内部资料里来的。而且我也试过,错不了。
    你这样只是把前十个选出来再排序。
    帮我看看我的问题。分给你留着呢!
      

  6.   

    在 sql server中可以这样实现:
    select top 10 * from userinfo order by user_id desc请问,在oracle中如何实现呢???????
      

  7.   

    假设如下:
    表名: t_Salary
    字段: Emp_no  人员编号,
    Amount 收入
    数据库 Oracle8 or laterSelect * from t_Salary aa,
    (Select a.Emp_no
    From t_Salary a,t_Salary b
    Where a.Amount<=b.Amount
    Group   by a.Emp_no
    Having Count(b.Emp_no)<=10) bb
    where aa.Emp_no = bb.Emp_no
    order by aa.Amount desc
      

  8.   

    tojamex:
    我的用法就是oracle的呀。我正在用oracle,试过,没错的。
      

  9.   

    to Richter:
    我用你的语句试了几次,每一次都已死机告终,不知您是过没有???
      

  10.   

    to zheng:
    我用你的语句试了一下:
    select F from (select F from Table order by F) where rownum<=10 它报语法错误!!! 我用的是oracle 8 ,不是8i的, 难道不支持???还有别的办法吗?
      

  11.   

    我试过:以下是测试Sql,在Oracle8i下试。
    Create table t_S_Salary(
    Emp_no varchar(10),
    Amount number(8)
    )
    /
    Insert into t_S_Salary
    Values('00001',1)
    /
    Insert into t_S_Salary
    Values('00002',2)
    /
    Insert into t_S_Salary
    Values('00003',3)
    /
    Insert into t_S_Salary
    Values('00004',4)
    /
    Insert into t_S_Salary
    Values('00005',5)
    /
    Insert into t_S_Salary
    Values('00006',6)
    /
    Insert into t_S_Salary
    Values('00007',7)
    /
    Insert into t_S_Salary
    Values('00008',8)
    /
    Insert into t_S_Salary
    Values('00009',9)
    /
    Insert into t_S_Salary
    Values('00010',10)
    /
    Insert into t_S_Salary
    Values('00011',11)
    /
    Insert into t_S_Salary
    Values('00012',12)
    /
    Insert into t_S_Salary
    Values('00013',13)
    /
    Insert into t_S_Salary
    Values('00014',14)
    /
    Insert into t_S_Salary
    Values('00015',15)
    /Select aa.Emp_no,aa.Amount
     from  t_S_Salary aa,
    (Select a.Emp_no
    From t_S_Salary a,t_S_Salary b
    Where a.Amount<=b.Amount
    Group   by a.Emp_no
    Having Count(b.Emp_no)<=10) bb
    where aa.Emp_no = bb.Emp_no
    order by aa.Amount desc
    /
    Drop table t_S_Salary
    /
    赚点分太辛苦了,你赶紧给点分吧。
      

  12.   

    如果oracle8不支持我的用法。我就爱莫能助了。8i倒是可以的。
      

  13.   

    select F from (select F from Table order by F) a(这里应加一个别名) where rownum<=10 
      

  14.   

    select F from Table order by F desc  where rownum<=10;
      

  15.   

    这条语句一定行:
    select column from 
    (select * from table_name order by column desc)
    where rownum <= 10;
      

  16.   

    谢谢Richter,我一定会给你分的,不过我发现了一个错误,当表的内容如下时:EMP_NO     AMOUNT    
    ---------- ----------
    00001               1
    00002               2
    00003               3
    00004               4
    00005               5
    00006               6
    00007               7
    00008               8
    00009               9
    00010              10
    00014             225
    00018              22
    00019              22
    00020               6
    00021               6
    00022              60
    00023              60
    00013               5
    00024              60
    00025              60
    00026             225
    00027               2
    00028               2
    00029             200
    00030              10
    00031              10
    00033              10
    00032              11
    00035              11你的语句返回的结果如下:
    EMP_NO     AMOUNT    
    ---------- ----------
    00014             225
    00026             225
    00029             200
    00022              60
    00023              60
    00024              60
    00025              60
    00018              22
    00019              22
    已选择9行。该如何解决????
    请指教!!!to:zheng
    你的语句在oracle 8中报错如下:
    select * from (select * from t_s_salary order by amount) asd where rownum<=10 
                                            *
    ORA-00907: ?????
    好像是不支持order by amount这句话to wwsccd:
    您的我试了,也不行,同样报错: ORA-00907
      

  17.   

    人气真旺!
    我使用的为Oracle 8i。
    用Richter的方法改进如下即可:
    Select aa.Emp_no,aa.Amount
      from t_S_Salary aa,
          (Select a.Emp_no
             From t_S_Salary a,t_S_Salary b
            Where a.Amount<=b.Amount
            Group  by a.Emp_no
           Having Count(b.Emp_no)<= 11 ) bb
     where aa.Emp_no = bb.Emp_no
       and rownum <= 10
     order by aa.Amount desc
     但在amount为22的员工有3位时,你只能将11继续加大。
     当然还要考虑amount大于22员工数!
     最简省的方法,将11改为1000或更大。
     此种方法效率...我推荐一种方法。
    1、创建视图
    create view v_s_salary as
    select emp_no,sum(amount) total
      from t_s_salary
     group by emp_no
     order by sum(amount) desc;
    2、
    select * from v_s_salary 
     where rownum <= 10;
      

  18.   

    在Oracle 8i中,可以这样写:
    Select 字段 From (Select 字段 From 表 Where Nvl(字段,0)<>0 Order by 字段 Desc) Where Rownum<=10
    在8.0.5及以下版本中不能这伴写(子查询中的Order by)。
    不过只用Select应该有办法,我想想先。
      

  19.   

    如果你要按 table_name 表中 ColName 字段排序,这条语句一定行:
    select ColName from (select * from table_name order by ColNamedesc)
    where rownum <= 10;