日期:2014-05-17  浏览次数:21287 次

oracle 中查询一个有数据的视图,加上rownum后没有数据显示出来

select rownum,t1.* from 
               (
                      --msg_view是一个视图
                      select * from msg_view where msgtype='1' 
                      --下面这三个条件随便去一个,使用rownum都可以查询到数据的,但是三个条件都在的话,使用rownum就查不到数据了,不适用rownum的话是有数据的
                      and userid in (select * from table(fun_getchildusers(100)))
                      and (mtstatus!=4 or mtstatus is null)
                      and (addtime between to_date('2013-12-16 0:00:00','yyyy-MM-dd HH24:mi:ss') and to_date('2014-1-16 11:21:29','yyyy-MM-dd HH24:mi:ss'))

               ) t1

上面的代码我我数据库的一个查询语句,问题是,我如果不使用rownum的话,无论怎么查都是有数据的,
但是加上rownum以后,就查不到数据了,下面有3个and的条件,随便去一个,使用rownum就又可以查询到数据了,请问这是什么原因呢?请高手指教下
------解决方案--------------------
比较奇葩
------解决方案--------------------
你是说rownum加在哪?where还是select?要是where中是怎么加的。
------解决方案--------------------
select * from table(fun_getchildusers(100))
这个是啥?
------解决方案--------------------
引用:
select * from table(fun_getchildusers(100))
这个是啥?
这个是一个function的返回类型是一个表
------解决方案--------------------
这么说,这种情况应该是sql写的有问题。
select加rownum,唯一的变化应该就是执行计划了。
如果sql没有问题,执行计划怎么变,结果是一样的。
你看看这个函数里是怎么写的,是不是用到rownum了。
------解决方案--------------------
把rownum 行数限制条数写大写就可以了吧!