Oracle的分页查询是没有进行任何排序操作的,Oracle是顺序的从数据块中读取符合条件的数据返回到客户端。
而Oracle的排序算法不具有稳定性,也就是说,对于排序键值相等的数据,这种算法完成排序后,不能保证这些键值相等的数据保持排序前的顺序。
解决办法就是在排序的最后一个字段后面加上主键或者ROWID的排序即可解决该问题。
order by name,age,sex,ROWID;或
order by name,age,sex,ID
但是应该注意:一个查询中使用了分组函数和排序函数,任何排序字段不在分组函数则必须要在group by中,否则出错。ORA-00979:不是group by表达式。
分组函数包括 :AVG\SUM\MIN\MAX\COUNT\STDDEV\VARIANCE。