MySQL SQL如何获取表中最近的记录?

4

我有以下的sql语句,尝试从表格中检索最近的条目。我有两个问题:

  1. Is it better to order by id or by date?

  2. How do I rewrite this sql statement to re-order by date?

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

6

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

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

如果您指的是最近更新的记录,则一定要按照日期排序。

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


3
如果您按日期排序,请确保在“entry_date”字段上添加索引。 - Wim

0

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

我假设id字段的值仅保证唯一性,可能没有办法确保它们按插入时间排序。例如,id字段可以是循环字段(6,7,8,-7,-6 ...),或者表格上的后续修改允许更改id字段,但不知道如何保留它们按插入时间排序,或并行事务可能会决定以不同的顺序在id和日期字段上插入新行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接