Php 如何选择最近的10条记录

Php 如何选择最近的10条记录,php,sql,mysql,Php,Sql,Mysql,我有一个mysql数据库。如何选择最近的10条记录?我不储存时间戳。但是最近的记录是最底层的记录?而且我如何点击一个按钮得到下一个十,下一个十等等。有点像一堆论坛帖子。最新的列首先显示。如果您有一个自动增量列,您可以按该列降序排序,然后限制为10 但我建议您存储时间戳并按其排序,这样您就知道您是根据日期对记录进行排序的,而不是根据与插入日期一致的其他值。如果您有一个自动增量列,您可以按降序排序,然后限制为10 但我建议您存储时间戳并按其排序,这样您就知道您是根据日期对记录进行排序,而不是根据与插

我有一个mysql数据库。如何选择最近的10条记录?我不储存时间戳。但是最近的记录是最底层的记录?而且我如何点击一个按钮得到下一个十,下一个十等等。有点像一堆论坛帖子。最新的列首先显示。

如果您有一个
自动增量列,您可以按该列降序排序,然后限制为10


但我建议您存储时间戳并按其排序,这样您就知道您是根据日期对记录进行排序的,而不是根据与插入日期一致的其他值。

如果您有一个
自动增量列,您可以按降序排序,然后限制为10


但我建议您存储时间戳并按其排序,这样您就知道您是根据日期对记录进行排序,而不是根据与插入日期一致的其他值。

我相信您有一个自动递增列作为主键,您可以使用此列并按描述排序

select * from table order by id desc  limit 10

否则您的数据库设计很差

我相信您有一个自动递增列作为主键,您可以使用此列并按desc排序

select * from table order by id desc  limit 10

否则,您的数据库设计非常糟糕

除了@BoltClock提到的之外,预先查询最大ID可能有助于引擎检索其他记录。。。ie:如果你有100万条记录,最近的10条,我不知道它是否还会尝试查询出这100万条,订购它们,然后将其转储。。我想试试这样的东西

select STRAIGHT_JOIN
      YT.*
   from 
      ( select max( IDColumn ) as MaxOnFile
           from YourTable ) PreQuery,
      YourTable YT
   where 
      YT.IDColumn >= PreQuery.MaxOnFile -10
   order by
      YT.IDColumn DESC
   limit 10

但是,如果出于某种原因,允许删除记录,您可以选择比-10稍晚一点的减法。。。但至少这样,系统甚至不会尝试处理所有其他记录…

除了@BoltClock提到的内容外,预先查询最大ID可能有助于引擎检索其他记录。。。ie:如果你有100万条记录,最近的10条,我不知道它是否还会尝试查询出这100万条,订购它们,然后将其转储。。我想试试这样的东西

select STRAIGHT_JOIN
      YT.*
   from 
      ( select max( IDColumn ) as MaxOnFile
           from YourTable ) PreQuery,
      YourTable YT
   where 
      YT.IDColumn >= PreQuery.MaxOnFile -10
   order by
      YT.IDColumn DESC
   limit 10

但是,如果出于某种原因,允许删除记录,您可以选择比-10稍晚一点的减法。。。但至少这样,系统甚至不会尝试处理所有其他记录…

您需要一些列来推导排序顺序,即时间戳/日期或自动递增的
int
列。mySQL没有像其他DMB一样的内置“行数”值。如果要获取最新记录,则应存储时间戳。是否有任何方法从底部进行选择?很抱歉,原始的lingoMySQL(以及其他RDBMS)不以任何顺序存储记录。只有在向查询中添加
ORDER BY
子句时,才会进行排序。您需要一些列来推导排序顺序,即时间戳/日期或自动递增的
int
列。mySQL没有像其他DMB一样的内置“行数”值。如果要获取最新记录,则应存储时间戳。是否有任何方法从底部进行选择?很抱歉,原始的lingoMySQL(以及其他RDBMS)不以任何顺序存储记录。只有在向查询中添加
orderby
子句时,才能进行排序。谢谢。但是,如果我的数据库很大,这个查询会不会有些过分?我认为这是一个完全独立的问题,已经在SOthanks上讨论过了。但是,如果我的数据库很大,这个查询会不会过火呢?我认为这是一个完全独立的问题,已经在上面讨论过了。。如果我没有错,这将对整个结果进行排序?使用索引,它将加快速度。@Ram
LIMIT 10
(带索引)可能会进行一些内部优化。与上述问题相同。。如果我没有错的话,这将对整个结果进行排序?使用索引,它将加快速度。@Ram
LIMIT 10
(带索引)可能会进行一些内部优化。