我有一个包含以下字段的 MySQL 表:
Email, Flag1, Flag2
问题: 有什么方法可以进行选择以获取最后 100 个插入的字段?
据我了解,表格是通过在表格末尾添加带有简单“插入”的新记录来填充的。
我有一个想法如何在 PHP+MySQL 中做到这一点(非常丑陋的方式:选择所有记录,在 php 循环中为每个记录分配自动递增的 ID,并获取最后 100 条记录。)
有没有更优雅的方法可以用纯 MySQL 做到这一点?
如果没有唯一的方法来标识行(例如 anid
或 a date
),则无法获取最后插入的记录,因为您的索引将根据您拥有的任何主键进行排序(假设Email
在这种情况下)。
这是不可能的,因为如果您不设置带有时间戳或自动增量的字段,系统将如何知道最后插入的内容?所以你有两个简单的选择。
创建一个时间戳字段:当您下订单时select * from yourtamble order by timefield desc limit 100
创建一个具有自动增量的 ID。这样做的好处是您可以拥有一个主键并知道插入列表的确切顺序,坏处是您需要另一个字段时间来知道何时插入数据。作为时间戳解决方案,您可以制作select * from yourtamble order by id desc limit 100