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) 依赖表中的最新记录中获取信息?