MySQL SQL 获取表中的最新记录?

Posted

技术标签:

【中文标题】MySQL SQL 获取表中的最新记录?【英文标题】:MySQL SQL getting most recent records in a table? 【发布时间】:2010-01-17 11:23:38 【问题描述】:

我有一个如下的 sql 语句,试图检索表中的最新条目。我有两个问题:

    按id还是按日期排序更好?

    如何重写这条 sql 语句以按日期重新排序?

    SELECT id, comment, DATE_FORMAT(entry_date, '%W %H:%i') FROM comments ORDER BY id DESC LIMIT 10
    

【问题讨论】:

【参考方案1】:

这取决于您所说的最近是什么意思:

如果您指的是最近创建的记录,那么(在大多数情况下)按主键 id 将起作用。

如果您指的是最近更新的记录,那么肯定是按日期。

要按日期排序,只需更改字段名称:ORDER BY entry_date DESC

【讨论】:

如果您按日期排序,请确保在 entry_date 字段中添加索引。【参考方案2】:

如果您必须 100% 精确地对最新行进行排序,则必须使用日期字段。当您想要为最新排序时,对时间字段进行排序非常有意义,如果已编制索引,则按日期排序将花费与排序 id-s 相同的时间。

我假设 id 字段的值只能保证是唯一的,可能无法确保它们按插入时间排序。例如 id 字段可以是一个循环字段(6,7,8,-7,-6...),或者以后对表的修改允许更改 id 字段但不知道保留它们的顺序插入时间,或者并行事务可能决定在 id 和 date 字段中以不同的顺序插入新行。

【讨论】:

以上是关于MySQL SQL 获取表中的最新记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MySQL (MardiaDB) 依赖表中的最新记录中获取信息?

如何从重复记录中检索mysql表中的最新数据

oracle 如何随机取表中n条记录?

MySQL查询从具有1000万行的表中获取每个条目的最新记录

从具有特定根的 SQL 表中获取最新分支的最有效方法是啥?

SQL查询:从表中删除除最新N之外的所有记录?