mysql排序遇到了问题

mysql order by 排序部分主键没有默认升序

请看下面的例子

有问题的

我是按照relate_data降序的,那主键ID应该自己默认是升序的,relate_data 的2 和 1 对应的ID都是升序的,但是3就不是升序的,对应3的两条ID是降序排列的

clipboard.png

疑惑的地方

如果我把id 773448 改成7733** 排序就没有没问题

clipboard.png

疑惑

就因为id和其他的不是7733** 的吗?我改成7735**也是会出现relate_data 3 对应的ID 也是降序的,我可以加上id asc 是可以解决的,只是很奇怪,为什么ID不同情况还不一样


阅读 3.4k
4 个回答

在mysql权威指南找到了解释,(我确实删除了不少数据)以后有排序的最好还是自己加上条件,不能太依赖数据库的默认排序

clipboard.png

mysql没有承诺默认主键ID升序,一般来说mysql会按照最高效率方式排序,一般会使用主键索引所以主键会有一定次序,但mysql也没做过这样的保证,在某些情况下,主键无序更快,那么mysql不会默认主键升序。

MySQL的排序算法是不稳定排序

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题