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