2014-01-25 86 views
0

我試圖獲取n個最近的條目到數據庫中的列表,但按升序排序。MySQL最近n個條目,升序?

顯然,我可以使用以下方法來獲取前n項:

SELECT owner_id,message 
FROM messages 
WHERE thread_id = ? 
ORDER BY time ASC 
LIMIT ? 

還是這讓最多5最近,下降:

SELECT owner_id,message 
FROM messages 
WHERE thread_id = ? 
ORDER BY time DESC 
LIMIT ? 

但我怎麼能獲得最新的5升序?我可以在PHP中顛倒數組的順序,但這似乎有點低效。

回答

5
Select * from 
(SELECT owner_id,message,time 
FROM messages 
WHERE thread_id = ? 
ORDER BY time DESC 
LIMIT ?) test 
Order by time ASC 

Sample fiddle

+0

謝謝,這看起來是在正確的軌道上,但我從中得到錯誤。當我嘗試訪問測試別名的時間列時,我被告知「'order clause'中的未知列時間''。我試圖訪問它作爲test.time,但MySQL不會接受。 – nathan

+0

編輯。現在看。你應該在臨時結果集中獲得時間字段 –

+0

哈哈,我想我應該能夠自己找出那一個。謝謝! – nathan

3
select owner_id,message from (
    SELECT owner_id,message,time 
    FROM messages 
    WHERE thread_id = ? 
    ORDER BY `time` DESC 
    LIMIT ? 
) temp 
order by time ASC 
+0

你說得對,現在沒關係。 – immo

+0

錯誤,錯誤,錯誤.... :)現在它工作正常 – immo