Mysql - 在表中返回最后3个结果

时间:2010-06-17 05:44:39

标签: mysql sql-order-by sql-limit

我想知道是否有一个简单的方法只用一个sql语句来返回表中的最后三个结果但是按顺序,即如果有一个有问题的结果它会以98,99,100的顺序返回只需按ID DESC和限制3排序,它将按顺序返回100,99,98

任何帮助都非常感激。

P.S。在这个例子中,假设我不知道结果的数量,并且真的不想发送2个sql请求只是为了找到数量(对于任何OFFSET答案)。

4 个答案:

答案 0 :(得分:7)

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

SELECT * FROM (SELECT * FROM some_table ORDER BY id DESC LIMIT 3) a ORDER BY id

答案 1 :(得分:3)

我想有两种选择。

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

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

答案 2 :(得分:2)

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

SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID;

答案 3 :(得分:0)

Select * 
FROM (SELECT * FROM yourTABLE ORDER BY ID DESC LIMIT 0,3) as TempTable ORDER BY ID