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

oracle复合查询的问题
select   *   from     unittable   u   where   contains(u.unitname, '公司 ')> 1   order     by   logtime   desc   这个查询语句能查出来
SELECT   *   FROM   (SELECT   ROWNUM   RN,TB.*   FROM   (select   *   from     unittable   u   where   contains(u.unitname, '公司 ')> 1   order   by   u.logtime   desc     )   TB)   WHERE   RN> 0   AND   RN <=15  
这个查询结果为0,其中去掉contains   或   order   by   条件就能查出结果,请问各位着是怎么回事,谢谢。

------解决方案--------------------
select ROWNUM RN, u.* from unittable u where contains(u.unitname, '公司 ')> 1
and RN> 0 AND RN <=15
order by logtime desc
------解决方案--------------------
ROWNUM是记录的物理存储地址,估计可能刚好你查的记录的ROWNUM> 15;
而order by u.logtime desc 的排序和ROWNUM的排序不一致,所以可能会无法查出结构;
建议楼主把后面的WHERE RN> 0 AND RN <=15 去掉,应该就不会有这种问题了,
换言之是ROWNUM造成的问题.