sql中order by 待排序的字段值相同時,發生分頁出現重復數據的問題


問題描述:
數據分頁時需要根據數據記錄某一字段倒序,例如對表中的 '金額差'字段 desc   排序,我們會發現,前端進行請求時獲取的數據可能會出現問題,分頁中出現了一定的重復數據。

問題發生:當'金額差'值大量為0時(相同值)時,進行排序。這時候對數據的排序可能變得隨機,即一會兒這條數據在前面,一會兒這條數據在后面了 ,這時就會出現分頁的數據出現重復。

例如:表一查詢150-200條的數據,表二查詢150-201的數據。

 

 

按desc排序,163之后值全為0了,當排序變得隨機,那么假設分頁查詢,每頁查詢10條數據,

第5頁查詢到10條數據,而查詢下一頁也就是 第6頁的數據時,由於數據的排序可能隨機,那么可能后面的數據排到了前面,而現在查到的第6頁上的數據和第5頁相同。

問題解決:
order by 多個字段,用逗號分隔每一個字段。

排序的方法是首先按照第一個字段排序,如果第一個字段相同的,再按照第二個字段來再次排序,

從而產生排序結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM