2010-06-17 32 views
0

我想知道是否有一個簡單的方法只用sql語句返回表中的最後三個結果,但以該順序,即如果有一個Hundered結果它會返回98,99,100的順序不是簡單地按照ID DESC和限制3順序返回100,99,98Mysql - 返回表3中的最後3個結果

任何幫助非常感謝。

p.s.在這種情況下,可以說我不知道​​結果的數量,並且不真的想發送2個SQL請求來查找金額(對於任何OFFSET答案)。

回答

7

一種方法是使用DESC,然後就再次對它們進行排序:

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

都十分相似的答案,但感謝大家,歡呼聲盧卡斯 – 2010-06-17 05:54:55

+0

越來越ERR _error_ 1您的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第1行附近使用正確的語法以使用'AS T ORDER BY TIME_STAMP'。 – 2010-06-17 05:59:31

+0

發佈您的查詢。另外,你是不是想在內部查詢中使用'ORDER BY TIME_STAMP DESC'? – 2010-06-17 06:01:19

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

兩個選項,我猜。

  1. 您可以使用DESC按照您所述的相反順序返回它們,只需在您的應用程序代碼中反轉該順序即可。這可能是最有效的,因爲您可以在單個查詢中執行此操作,並且它可能只需要讀取索引的三行。

  2. 您可以先找出在表格的結果數量,然後做一個LIMIT <結果-3>,3

+0

跟進:對於大型表格或複雜查詢,第二個選項可能會慢得多。第一個更好。 – thomasrutter 2017-03-25 13:18:16

1

它是好的,如果你只是翻轉回原來的訂購?

SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID; 
相關問題