mysql - ORDER BY id 或 date_created 以显示最新结果?

标签 mysql sql database sql-order-by

我有一个表(实际上有几个),我想首先从中获取最新条目的结果。这是我的 ORDER BY 子句选项:

  • date_created INT(从不更改值)
  • id(当然是 INT AUTO_INCREMENT!)

两列应该同样代表插入记录的顺序。我自然会像任何正常人一样使用 date_created 字段,但我仍然对此感到好奇。

我知道这可能有点乱七八糟,但有什么理由或极端情况说明我不应该使用 id 列吗?

编辑: 我认为这个问题对于我们想要真正代表插入顺序的值是模糊的。谢谢大家的所有回答,我将接受最好的答案并继续前进,因为我认为我通过假设 id 始终有序(请参阅@Wrikken 的评论)而使这变得困难。我的直觉是开发人员永远不应该考虑 id ,这是这里的大多数答案所指向的。

最佳答案

依靠 ID 列进行时间排序不是一个好主意,因为这不是它的目的。基本上,ID 只是该行的唯一键,仅此而已。使用 ID 可能永远不会导致问题,但没有理由增加假定按 ID 排序将始终成立的复杂性。例如,您将来可能想要删除条目,然后手动插入新条目,或者从其他来源导入带有过去时间戳的条目。如果您没有 date_created 列,那么 ID 将是您唯一的选择,但既然您有该列,请使用它,因为它是您的最佳选择。

关于mysql - ORDER BY id 或 date_created 以显示最新结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5570958/

相关文章:

MySQL 左连接单字段

database - 用于开发的 Google Cloud Spanner

php - drupal 7 将实际内容存储在数据库中的什么位置?

mysql - 表 '...' 不存在

sql - 仅在 SQL Server 的日期时间列中更新时间

java - 如何根据创建日期按排序顺序从数据库中获取表名列表?

python - execute(sql) 后调用fetchall() 是不是第二次读取数据?

MySQL:更新具有不同列名的多个表?

javascript - 似乎无法使用 express 在 Node.js 上启动和运行 MySQL(之前只使用过 WAMP/MAMP)

MySQL 添加到列