赞
踩
今天在系统测试的过程中,测试人员发现自己新添加的科目添加到系统中在页面默认分页查询中没有找到自己新加的科目(分页过程中页面显示数据确实和数据表中的数据总量一致),但是通过系统的搜索功能是可以查询的到数据?提了一个bug?
解决bug的过程:
系统中有一个科目表subject_manage表结构如下
- create table SUBJECT_MANAGE
- (
- ID VARCHAR2(32) not null,
- SUBJECTNAME VARCHAR2(50),
- EXAMTASKID VARCHAR2(32),
- EXAMTYPE VARCHAR2(100)
- )
- comment on table SUBJECT_MANAGE
- is '用于高考、成考、自考等考试类型的科目日常管理。';
- -- Add comments to the columns
- comment on column SUBJECT_MANAGE.SUBJECTNAME
- is '科目名称';
- comment on column SUBJECT_MANAGE.EXAMTASKID
- is '考试类型ID';
- comment on column SUBJECT_MANAGE.EXAMTYPE
- is '考试类型名称';
- comment on column SUBJECT_MANAGE.STARTTIME
分页sql的语句为
<pre name="code" class="sql">select * from ( select row_.*, rownum rownum_ from ( select id,subjectname,examtaskid, examtype from subject_manage where 1=1 order by examtype ) row_ where rownum <= index * pagesize) table_alias where table_alias.rownum_ >= (index - 1) * pagesize + 1
examtype 列并不能确定其唯一性,那么ORACLE在每次执行排序时并不能确定数据的唯一性,导致同样的排序顺序但是每次运行时并不能保证得到一样的结果。
解决办法
select * from ( select row_.*, rownum rownum_ from ( select id,subjectname,examtaskid, examtype from subject_manage where 1=1 order by examtype,id ) row_ where rownum <= index * pagesize) table_alias where table_alias.rownum_ >= (index - 1) * pagesize + 1
有以上的结论之后处理方法也就简单明了了,Order By中的字段必须能够确保唯一即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。