我想知道是否有一种简单的方法,只需要一条 sql 语句就可以返回表中的最后三个结果,但是按照这个顺序,即如果有一个百的结果,它将按 98、99、100 的顺序返回,而不仅仅是按顺序返回id DESC 和 limit 3 将按顺序返回 100、99、98
非常感谢任何帮助。
ps 在这种情况下,假设我不知道结果的数量,也不想发送 2 个 sql 请求只是为了找到数量(对于任何 OFFSET 答案)。
我想知道是否有一种简单的方法,只需要一条 sql 语句就可以返回表中的最后三个结果,但是按照这个顺序,即如果有一个百的结果,它将按 98、99、100 的顺序返回,而不仅仅是按顺序返回id DESC 和 limit 3 将按顺序返回 100、99、98
非常感谢任何帮助。
ps 在这种情况下,假设我不知道结果的数量,也不想发送 2 个 sql 请求只是为了找到数量(对于任何 OFFSET 答案)。
一种方法是使用DESC
然后再次对它们进行排序:
SELECT * FROM (SELECT * FROM some_table ORDER BY id DESC LIMIT 3) a ORDER BY id
两种选择,我猜。
您可以使用 DESC 按照您所说的相反顺序返回它们,然后在您的应用程序代码中再次反转顺序。这可能是最有效的,因为您可以在单个查询中执行此操作,并且可能只需要读取索引的三行。
您可以先找出表格中的结果数,然后执行 LIMIT <results-3> , 3
如果你把它翻转回原来的顺序可以吗?
SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID;
Select *
FROM (SELECT * FROM yourTABLE ORDER BY ID DESC LIMIT 0,3) as TempTable ORDER BY ID