例子数据:
LOGID TYPE BANKID WORKER LOGDATE LOGTIME OPERATYPE
44 3 10001 liu 20120522 203237 2
43 3 10001 liu 20120522 203231 2
42 3 10001 liu 20120522 203152 2
41 5 10001 liu 20120522 202249 2
40 2 10001 liu 20120522 194932 2
39 5 10001 liu 20120522 180015 2
38 5 10001 liu 20120522 175732 2
37 5 10001 liu 20120522 175612 2
36 5 10001 liu 20120522 175612 2
使用sql语句SELECT t.*
  FROM PARAM_OPERALOG t
 WHERE BANKID = '10001'
   AND LOGDATE BETWEEN 20120522 AND 20120522
 ORDER BY LOGDATE DESC, LOGTIME DESC, LOGID DESC可以查询到9条数据。
但是使用sql语句SELECT t.*, rownum
  FROM PARAM_OPERALOG t
 WHERE BANKID = '10001'
   AND LOGDATE BETWEEN 20120522 AND 20120522
 ORDER BY LOGDATE DESC, LOGTIME DESC, LOGID DESC查询出来的却是空的,这是为什么?
主要目的是求原因。最好能够根据原因给出解决方案。谢谢

解决方案 »

  1.   

    oracle11g的版本是11.2.0.1.0,操作系统是Windows Server 2003 Enterprise x64 Edition Service Pack 2,操作系统是64位机
      

  2.   


    SELECT t.*
      FROM PARAM_OPERALOG t
     WHERE rownum < 5 
     ORDER BY LOGDATE DESC, LOGTIME DESC, LOGID DESC能够查出4条记录SELECT t.*, rownum
              FROM PARAM_OPERALOG t
             WHERE BANKID = '10001'
               AND LOGDATE <= 20120522
               --AND LOGDATE BETWEEN 20120313 AND 20120313
             ORDER BY LOGDATE DESC, LOGTIME DESC, LOGID DESC能够查询出9条记录,LOGDATE>=20120522也能查询出9条记录。可是LOGDATE>=20120522和LOGDATE<=20120522两个条件放到一起就查询不出结果了
      

  3.   

    rownum和 order by 不能同时使用。
      

  4.   

    不明白.....
    不知道这篇文章能不能对你有帮助
    http://apps.hi.baidu.com/share/detail/5881277
      

  5.   

    遇到这种情况最好用trace跟踪下
      

  6.   

    lz,你可以确定下你的logdate是不是char型的哈
      

  7.   

    不好意思,上面我的回答太傻了,不过我找了下,看到了一个不错的博文,关于rownum的,lz可以看看的撒http://www.cnblogs.com/chinhr/archive/2007/09/30/911685.html