1

我想知道是否有一种简单的方法,只需要一条 sql 语句就可以返回表中的最后三个结果,但是按照这个顺序,即如果有一个百的结果,它将按 98、99、100 的顺序返回,而不仅仅是按顺序返回id DESC 和 limit 3 将按顺序返回 100、99、98

非常感谢任何帮助。

ps 在这种情况下,假设我不知道结果的数量,也不想发送 2 个 sql 请求只是为了找到数量(对于任何 OFFSET 答案)。

4

4 回答 4

8

一种方法是使用DESC然后再次对它们进行排序:

SELECT * FROM (SELECT * FROM some_table ORDER BY id DESC LIMIT 3) a ORDER BY id
于 2010-06-17T05:51:17.797 回答
3

两种选择,我猜。

  1. 您可以使用 DESC 按照您所说的相反顺序返回它们,然后在您的应用程序代码中再次反转顺序。这可能是最有效的,因为您可以在单个查询中执行此操作,并且可能只需要读取索引的三行。

  2. 您可以先找出表格中的结果数,然后执行 LIMIT <results-3> , 3

于 2010-06-17T05:51:50.257 回答
3

如果你把它翻转回原来的顺序可以吗?

SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID;
于 2010-06-17T05:52:26.160 回答
1
Select * 
FROM (SELECT * FROM yourTABLE ORDER BY ID DESC LIMIT 0,3) as TempTable ORDER BY ID
于 2010-06-17T05:51:49.703 回答