rownum的问题
例如表   apw_ad   有以下数据   
 列名      A1               A2         ----(A1是number) 
                   1                  aa 
                   2                  bb 
                   3                  cc 
                   4                  dd 
                   5                  ee 
                   6                  ff 
                   7                  gg 
 我用 
 select   *   from   apw_ad      where   rownum <6   order   by   createtime   desc; 
 或 
 select   *   from   apw_ad      where   rownum <6   order   by   createtime   ; 
 来查询,每次出现的结果都是4条数据和   7      gg, 
 7      gg      每次都出现,这是为什么? 
 按理说,   他应该不出现的,这是怎么回事,怎么解决? 
------解决方案--------------------select * from (select * from apw_ad order by createtime desc) where rownum <6 ;
------解决方案--------------------  Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。 
 SQL>  select rownum ,id,name from student order by name; 
     ROWNUM ID     NAME 
 ---------- ------ --------------------------------------------------- 
          3 200003 李三 
          2 200002 王二 
          1 200001 张一 
          4 200004 赵四 
 可以看出,rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询 
 SQL>  select rownum ,id,name from (select * from student order by name); 
     ROWNUM ID     NAME 
 ---------- ------ --------------------------------------------------- 
          1 200003 李三 
          2 200002 王二 
          3 200001 张一 
          4 200004 赵四 
 这样就成了按name排序,并且用rownum标出正确序号(有小到大);