Oracle分页后数据出错的问题
发布时间:2020-12-12 14:01:35 所属栏目:百科 来源:网络整理
导读:有客户反映,某个功能的前3页数据是一样的,后来检查发现确实如此。看看sql的查询结果,确实是前三页一样的,感觉sql也没什么问题,上网查询资料发现,是因为排序字段的问题。 SELECT *FROM ( SELECT bb.*,ROWNUM rownum_bb FROM ( SELECT aa.* FROM ( SELEC
有客户反映,某个功能的前3页数据是一样的,后来检查发现确实如此。看看sql的查询结果,确实是前三页一样的,感觉sql也没什么问题,上网查询资料发现,是因为排序字段的问题。 SELECT * FROM ( SELECT bb.*,ROWNUM rownum_bb FROM ( SELECT aa.* FROM ( SELECT * FROM table1 T ORDER BY T.ptime DESC ) aa ) bb WHERE ROWNUM <= 10 ) WHERE rownum_bb > 0 如上面所示,sql根据T.ptime进行排序,但如果ptime有重复的话可能会出现分页数据出问题。 解决方法:如果排序中是可能有重复数据的字段,增加一个不会重复数据的字段,比如主键、row_id等。修改sql如下: SELECT * FROM ( SELECT bb.*,ROWNUM rownum_bb FROM ( SELECT aa.* FROM ( SELECT * FROM table1 T ORDER BY T.ptime DESC,T.pkid ) aa ) bb WHERE ROWNUM <= 10 ) WHERE rownum_bb > 0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |