SELECT ID FROM MAILS
               WHERE ISPUB = 1
                 AND ISVAIDATE = 1
                 AND ISSECRET = 0
                 AND ISCHOOSEPUB = 1 order by id desc 这个查询是15条记录
SELECT ID FROM MAILS
               WHERE ISPUB = 1
                 AND ISVAIDATE = 1
                 AND ISSECRET = 0
                 AND ISCHOOSEPUB = 1 and rownum<=10 order by id desc 
这个查询出来根本不是按order by的条件来排序的

解决方案 »

  1.   

    select *
    from (
    SELECT ID FROM MAILS 
                  WHERE ISPUB = 1 
                    AND ISVAIDATE = 1 
                    AND ISSECRET = 0 
                    AND ISCHOOSEPUB = 1 order by id desc 
    )
    where rownum <=10 
      

  2.   

    order by 与rownum取数据的关系,和ORDER BY字段是否是主键有关系
    详细请看此贴
    http://topic.csdn.net/u/20080827/17/5962849a-6504-4b4b-8d71-fcf9bf7f9664.html
      

  3.   

    把ORACLE的执行顺序弄明白就清楚了。
      

  4.   

    嵌套一层试试:select * from
    (SELECT ID FROM MAILS 
                  WHERE ISPUB = 1 
                    AND ISVAIDATE = 1 
                    AND ISSECRET = 0 
                    AND ISCHOOSEPUB = 1 order by id desc)
    where  rownum <=10