【问题标题】:MySQL simple query of table returns results in strange orderMySQL对表的简单查询以奇怪的顺序返回结果
【发布时间】:2021-12-28 15:39:56
【问题描述】:

我的 MySQL 表设置了一个自动递增的主键。每当我

SELECT * FROM [MYTABLE]

主键值最高的记录不会最后显示。是否有一个原因?我可以

SELECT * FROM [MYTABLE] ORDER BY [MYTABLE].ID ASC

最后显示最高的。抱歉,我无权分享数据库中的任何内容。也许有某种基础数据字段(如记录号)未包含在用于排序的表中。这是 Windows 服务器上的 MySQL 5.7.19。 在我看来,按主键排序比它所做的更有意义。 MySQL 版本 5.7.19。

【问题讨论】:

  • 行未排序存储,获得排序结果的唯一方法是对其进行排序

标签: mysql sql-order-by


【解决方案1】:

你想要的不适用。 好吧,当然,无论数据如何存储,MySquile 都会固有地获取数据。 每次更改时对索引表进行排序,列出表中的主键,或者每次对调用进行排序。 按顺序选择

SELECT * FROM [MYTABLE] ORDER BY [MYTABLE].ID ASC

请记住,一旦您开始插入和删除数据,您就永远无法保证自动递增列的顺序,因此除了您在查询中使用 ORDER BY 指定的顺序外,您不应依赖任何顺序。这是一项昂贵的操作,因为它需要完全重新创建索引,所以我不建议经常这样做。

【讨论】:

    【解决方案2】:

    Amin Zayeromali 是对的。这个问题的整个前提是错误的。 “奇怪的顺序”意味着会有一个非奇怪的顺序,并且期望 MySQL 直觉结果应该以哪种方式排序是荒谬的,尤其是在涉及连接的情况下。这个问题永远不应该被问到。我只是没有足够成熟的经验来养成对所有选择语句进行排序的习惯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 2012-04-17
      • 2014-12-31
      • 2018-02-11
      相关资源
      最近更新 更多