1. 程式人生 > >Oracle中使用Order By排序時結果順序不穩定的解決辦法

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。