MySQL 根據時間排序失敗


問題背景:MySQL數據庫中,如果使用datetime,那其實只是精確到了秒。如果基於它排序並分頁查詢,若同一秒的數據超過一頁,則多次查詢得到的結果集可能會出現不一樣的靈異事件。SQL:

SELECT * FROM table_name WHERE id> 100 order by create_time DESC;

其中create_time的類型是datetime,id是自增長主鍵。

問題分析:分頁排序查詢場景,大量數據為同一個create_time時,MySQL隨機返回數據。MySQL數據庫中datetimedatetime(n), 0<=n<=6 是有精度區別的,如果使用datetime,那其實只是精確到了秒。

問題解決:排序規則同時加上id,SQL如下:

SELECT * FROM table_name WHERE id> 100 order by create_time DESC, id desc;

  文章到這里就結束了,看完之后你有什么想法想要跟大家分享呢?評論區在等着你!


免責聲明!

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



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