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造成的问题.