所以,我知道关系数据库中没有“最后一行”这样的东西,但我找不到更好的词来解释我想要做什么。我有一个如下所示的表,其中id
是一个AUTO_INCREMENT
字段,并且time
是当前的 Unix 时间戳。请注意,我可以为不同的行设置相同的时间戳。
╔════╦════════════╦════════════╦═════════════╦════════════╗
║ id ║ field_1 ║ field_2 ║ field_n ║ time ║
╠════╬════════════╬════════════╬═════════════╬════════════╣
║ 1 ║ data_field ║ data_field ║ data_field ║ 1369748934 ║
║ 2 ║ data_field ║ data_field ║ data_field ║ 1369748935 ║
║ 3 ║ data_field ║ data_field ║ data_field ║ 1369748936 ║
║ 4 ║ data_field ║ data_field ║ data_field ║ 1369748936 ║
║ 5 ║ data_field ║ data_field ║ data_field ║ 1369748938 ║
║ 6 ║ data_field ║ data_field ║ data_field ║ 1369748939 ║
╚════╩════════════╩════════════╩═════════════╩════════════╝
我想做的是一个从最高time
字段开始搜索的选择,因为我知道它是从最低到最高排序的,所以我希望它在第一行不匹配我的WHERE
子句时停止搜索,因为所有其他行都不匹配它也是。我认为 MySQL 所做的是搜索所有行,但是因为我知道我的数据结构并且我知道我想要的数据的位置,所以我不需要搜索整个表。另外,如果我使用ORDER BY
,我相信我的WHERE
子句的所有内容都会首先执行,所以我要做的基本上是搜索整个行集然后对其进行排序。一件重要的事情是我不知道要检索多少行才能使用LIMIT
子句。
这是一个示例查询:
SELECT fields FROM table WHERE time > timestamp
所以我想得到从给定日期到现在的所有结果。
非常感谢您的帮助。