Oracle 使用字符串作为查询集合时,rownum的使用
2017-12-11 18:23
507 查看
演示代码如下:
select t.* from (
select otr_t.* from (
select *
from logs
where USERNAME is not null
AND MOTHOD in ('info','error','warn','debug')
order by CREATETIME DESC
) otr_t
) t where rownum between 10 and 20结果查询结果为空,但实际上是有数据的。后猜想是rownum的问题,因为在otr_t以及t中查询,等于查询了两遍,而rownum作为默认的伪字段,在每次查询时都会重新生成,导致该查询结果为空。修改后的代码如下:
select t.* from (
select otr_t.*,rownum rn from (
select *
from logs
where USERNAME is not null
AND MOTHOD in ('info','error','warn','debug')
order by CREATETIME DESC
) otr_t
) t where rn between 10 and 20解析:在查询otr_t时,将之伪字段rownunm存储为rn真实字段,然后在t中继续查询即可。
select t.* from (
select otr_t.* from (
select *
from logs
where USERNAME is not null
AND MOTHOD in ('info','error','warn','debug')
order by CREATETIME DESC
) otr_t
) t where rownum between 10 and 20结果查询结果为空,但实际上是有数据的。后猜想是rownum的问题,因为在otr_t以及t中查询,等于查询了两遍,而rownum作为默认的伪字段,在每次查询时都会重新生成,导致该查询结果为空。修改后的代码如下:
select t.* from (
select otr_t.*,rownum rn from (
select *
from logs
where USERNAME is not null
AND MOTHOD in ('info','error','warn','debug')
order by CREATETIME DESC
) otr_t
) t where rn between 10 and 20解析:在查询otr_t时,将之伪字段rownunm存储为rn真实字段,然后在t中继续查询即可。
相关文章推荐
- Oracle使用ROWNUM将导致查询结果集的固化
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串
- 使用oracle中内置函数dbms_lob.instr()查询clob类型的字符串
- Oracle查询优化-使用字符串
- oracle中PLSQL存储过程中如何使用逗号分隔的集合(逗号分隔字符串转换为一个集合)
- Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串
- Oracle的rownum原理和使用(分页查询)
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- Oracle的rownum原理和使用(分页查询)
- Oracle SQL多行字符串拆分使用层次查询(connect by)、正则表达式
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- oracle中使用子查询为何取到大于自然数1 rownum 浅度解析
- oracle使用regexp_substr函数将字符串拆分成集合
- Oracle查询优化-使用字符串
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- oracle使用rownum做分页查询
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- oracle中使用子查询为何取到大于自然数1 rownum 浅度解析
- Oracle中正确利用Rownum来限制查询所返回的行数