Oracle中使用Order By排序时结果顺序不稳定的解决办法

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。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值