到现在还没有人回答,是不是只有我一个人能上CSDN?!嘿嘿!

解决方案 »

  1.   

    select * from 
    (Select  * from myTable where userId=10 order by CreateTime Desc )t
    where rownum<=10
      

  2.   

    rownum是伪列,是选出的记录集各行对应的行号。
    取前10行就是取rownum<=10;
    等包子来给你贴个长的吧,他是这方面专家。
      

  3.   

    包子大哥没来。我帮他贴:返回表中[N,M]条记录: 取得某列中第N大的行 
    select column_name from 
    (select table_name.*,dense_rank() over (order by column desc) rank from table_name) 
    where rank = &N; dense_rank over(order by ...) rank 结果11123456
    rank over(order by ...)       rank 结果11145678 假如要返回前5条记录: 
      select * from tablename where rownum<6;(或是rownum <= 5 或是rownum != 6) 
    假如要返回第5-9条记录: 
    select * from tablename 
    where … 
    and rownum<10 
    minus 
    select * from tablename 
    where … 
    and rownum<5 
    order by name 
     选出结果后用name排序显示结果。(先选再排序) 注意:只能用以上符号(<、<=、!=)。 
    select * from tablename where rownum != 10;返回的是前9条记录。 
    不能用:>,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件 不成立,查不到记录. 另外,这个方法更快: 
    select * from ( 
    select rownum r,a from yourtable 
    where rownum <= 20 
    order by name ) 
    where r > 10 
    这样取出第11-20条记录!(先选再排序再选) 
    要先排序再选则须用select嵌套:内层排序外层选。 rownum是随着结果集生成的,一旦生成,就不会变化了;同时,生成的结果是依次递加的,没有1就永远不会有2! 
    rownum 是在 查询集合产生的过程中产生的伪列,并且如果where条件中存在 rownum 条件的话,则: 
    1: 假如 判定条件是常量,则: 
    只能 rownum = 1, <= 大于1 的自然数, = 大于1 的数是没有结果的, 大于一个数也是没有结果的 
    即 当出现一个 rownum 不满足条件的时候则 查询结束   this is stop key! 
    2: 当判定值不是常量的时候 
    若条件是 = var , 则只有当 var 为1 的时候才满足条件,这个时候不存在 stop key ,必须进行 full scan ,对每个满足其他where条件的数据进行判定 
    选出一行后才能去选rownum=2的行…… 
      

  4.   

    Select * from myTable where (userId=10 and rownum<11)
    order by CreateTime Desc
      

  5.   

    顶,这个问题我很感兴趣!
    ----------------------------
                   CSDN一号机器人
      

  6.   

    Top是SQL Server中的语法,在Oracle 中你可以用rownum实现
    rownum称为伪列,类似的还的RowID
    select * from 
    (Select  * from myTable where userId=10 order by CreateTime Desc )t
    where rownum<=10
      

  7.   

    Select * from myTable where (userId=10 and rownum<11)
    order by CreateTime Desc
    这个是错的...,必须先排序,后 rownum<11
      

  8.   

    这和Sqlserver2000有类似的地方,Sqlserver中用top,而Oracle中用rownumselect * from myTable where (userId=10 and rownum<11)
    order by CreateTime Desc
      

  9.   

    Sqlserver中用top,而Oracle中用rownum
      

  10.   

    这样就可以了
    Select  * from myTable where userId=10 and rownum<10 order by CreateTime Desc
    你是在用ORACLE不是SQL Server 要使用ORACLE的语法
      

  11.   

    select * from tablename where recnum<11
    就这样
      

  12.   

    但是rownum>10就不行了,这是什么原因啊?
      

  13.   

    sql 中总没有 
    select top >10 * from tableName order by checkInTime desc 吧
      

  14.   

    select * from table where rowmun<11