問題背景:MySQL數據庫中,如果使用datetime,那其實只是精確到了秒。如果基於它排序並分頁查詢,若同一秒的數據超過一頁,則多次查詢得到的結果集可能會出現不一樣的靈異事件。SQL:
SELECT * FROM table_name WHERE id> 100 order by create_time DESC;
其中create_time的類型是datetime,id是自增長主鍵。
問題分析:分頁排序查詢場景,大量數據為同一個create_time時,MySQL隨機返回數據。MySQL數據庫中datetime和datetime(n), 0<=n<=6 是有精度區別的,如果使用datetime,那其實只是精確到了秒。
問題解決:排序規則同時加上id,SQL如下:
SELECT * FROM table_name WHERE id> 100 order by create_time DESC, id desc;
文章到這里就結束了,看完之后你有什么想法想要跟大家分享呢?評論區在等着你!