我可以在不添加递增列的情况下从表的底部到顶部运行 mysql 查询吗?
我有用户访问过的页面的历史记录,我想首先显示最近访问过的页面,我只记录 url,不记录时间或其他任何内容。
我是否必须添加一个带有递增数字或类似内容的列,或者有没有办法从表格底部到顶部运行查询?
如果我必须添加一列,最好的选择是什么?
我发现了这个类似的问题,但它没有回答我的问题,但我想我会在这里链接它: Scanning a mysql table from the bottom
我可以在不添加递增列的情况下从表的底部到顶部运行 mysql 查询吗?
我有用户访问过的页面的历史记录,我想首先显示最近访问过的页面,我只记录 url,不记录时间或其他任何内容。
我是否必须添加一个带有递增数字或类似内容的列,或者有没有办法从表格底部到顶部运行查询?
如果我必须添加一列,最好的选择是什么?
我发现了这个类似的问题,但它没有回答我的问题,但我想我会在这里链接它: Scanning a mysql table from the bottom
正如其他人所提到的,表格没有内在的顺序。SQL 中没有表的“顶部”或“底部”的概念。结果集有一个排序依据的概念,但这是不同的。
最简单的做法是在表中添加一个自增列。这将保证每一行都有不同的值。您可以继续只插入一个值。. . 自动增量是默认值。当您从表中拉出时,order by id desc
用于获取最新添加的内容。
该Order By
子句的问题在于它适用于程序已经搜索过整个表之后的结果,这使得当您有数十亿条记录时搜索时间超长,(在我的情况下它超时)这里的想法是强制程序从最近的记录开始并添加一个LIMIT
让我们1000
然后向您显示1k
最近的记录,因为程序达到限制而不搜索整个表,您可以看到这种方法使用最旧的记录而不是其他方式。
您应该包括某种顺序,不能保证项目在表中的排序顺序与它们插入的顺序相同。
它不是像 excel 这样的有序列表。
您应该添加一个 CreatedDate 列,然后ORDER BY CreatedDate DESC
只需添加
ORDER BY DESC
在 SQL 语句的末尾。