mysql 分页 order_Mysql查询使用limit分页,同时使用order by可能产生的问题
生活随笔
收集整理的這篇文章主要介紹了
mysql 分页 order_Mysql查询使用limit分页,同时使用order by可能产生的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
昨天遇到一個比較詭異的問題,在使用MySQL分頁查詢數據的時候,
有的數據明明數據庫里有,但是就是查不出來,有的數據卻反而會
重復出現。
這里面就涉及到一個MySQL自身的問題。
具體現象大概是:
當使用order by 的字段有多個相同的結果,同時,此次結果不足以把
數據完全顯示出來的時候。比如,使用order by對count字段排序,
同時使用limit 10規定取前10條。但是實際數據不止10條,那么,當使用sql
查詢第二頁的時候,也就是,使用limit 10,10來取第11-20條。取出的數據
是跟預期的并不一致的,有可能出現上一頁的數據。
通俗點解釋就是,order by 的字段在遇到相同值的時候,如果要取的數據
不是同一數據規模(比如,取前10個,和取11到20個[大概是先取20個,然后再
取11到20])是不同的取值規律。上面的文章中說是隨機的,可能不準確,
應該是有不同的優化取值算法,所以情況不同,算法不同,結果不同。
比較合適的解決方案是,使用order by的時候,另外添加一個各數據唯一的字段。
比如,主鍵。。雖然有的說,會影響查詢速度。不過,有什么辦法呢,總比數據
不準確要好。
總結
以上是生活随笔為你收集整理的mysql 分页 order_Mysql查询使用limit分页,同时使用order by可能产生的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 动态库构造函数,Linux共
- 下一篇: win10更新失败,怎么删除临时文件下面