我想知道是否有一個簡單的方法只用sql語句返回表中的最後三個結果,但以該順序,即如果有一個Hundered結果它會返回98,99,100的順序不是簡單地按照ID DESC和限制3順序返回100,99,98Mysql - 返回表3中的最後3個結果
任何幫助非常感謝。
p.s.在這種情況下,可以說我不知道結果的數量,並且不真的想發送2個SQL請求來查找金額(對於任何OFFSET答案)。
我想知道是否有一個簡單的方法只用sql語句返回表中的最後三個結果,但以該順序,即如果有一個Hundered結果它會返回98,99,100的順序不是簡單地按照ID DESC和限制3順序返回100,99,98Mysql - 返回表3中的最後3個結果
任何幫助非常感謝。
p.s.在這種情況下,可以說我不知道結果的數量,並且不真的想發送2個SQL請求來查找金額(對於任何OFFSET答案)。
一種方法是使用DESC
,然後就再次對它們進行排序:
SELECT * FROM (SELECT * FROM some_table ORDER BY id DESC LIMIT 3) a ORDER BY id
Select *
FROM (SELECT * FROM yourTABLE ORDER BY ID DESC LIMIT 0,3) as TempTable ORDER BY ID
兩個選項,我猜。
您可以使用DESC按照您所述的相反順序返回它們,只需在您的應用程序代碼中反轉該順序即可。這可能是最有效的,因爲您可以在單個查詢中執行此操作,並且它可能只需要讀取索引的三行。
您可以先找出在表格的結果數量,然後做一個LIMIT <結果-3>,3
跟進:對於大型表格或複雜查詢,第二個選項可能會慢得多。第一個更好。 – thomasrutter 2017-03-25 13:18:16
它是好的,如果你只是翻轉回原來的訂購?
SELECT * FROM (SELECT * FROM SOMETABLE ORDER BY ID DESC LIMIT 3) AS T ORDER BY ID;
都十分相似的答案,但感謝大家,歡呼聲盧卡斯 – 2010-06-17 05:54:55
越來越ERR _error_ 1您的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第1行附近使用正確的語法以使用'AS T ORDER BY TIME_STAMP'。 – 2010-06-17 05:59:31
發佈您的查詢。另外,你是不是想在內部查詢中使用'ORDER BY TIME_STAMP DESC'? – 2010-06-17 06:01:19