1

我可以在不添加递增列的情况下从表的底部到顶部运行 mysql 查询吗?

我有用户访问过的页面的历史记录,我想首先显示最近访问过的页面,我只记录 url,不记录时间或其他任何内容。

我是否必须添加一个带有递增数字或类似内容的列,或者有没有办法从表格底部到顶部运行查询?

如果我必须添加一列,最好的选择是什么?

我发现了这个类似的问题,但它没有回答我的问题,但我想我会在这里链接它: Scanning a mysql table from the bottom

4

4 回答 4

3

正如其他人所提到的,表格没有内在的顺序。SQL 中没有表的“顶部”或“底部”的概念。结果集有一个排序依据的概念,但这是不同的。

最简单的做法是在表中添加一个自增列。这将保证每一行都有不同的值。您可以继续只插入一个值。. . 自动增量是默认值。当您从表中拉出时,order by id desc用于获取最新添加的内容。

于 2012-09-05T21:45:30.567 回答
2

Order By子句的问题在于它适用于程序已经搜索过整个表之后的结果,这使得当您有数十亿条记录时搜索时间超长,(在我的情况下它超时)这里的想法是强制程序从最近的记录开始并添加一个LIMIT让我们1000然后向您显示1k最近的记录,因为程序达到限制而不搜索整个表,您可以看到这种方法使用最旧的记录而不是其他方式。

于 2019-06-20T22:09:34.350 回答
1

您应该包括某种顺序,不能保证项目在表中的排序顺序与它们插入的顺序相同。

它不是像 excel 这样的有序列表。

您应该添加一个 CreatedDate 列,然后ORDER BY CreatedDate DESC

于 2012-09-05T21:35:39.690 回答
1

只需添加

ORDER BY DESC

在 SQL 语句的末尾。

于 2012-09-05T22:22:27.187 回答