2011-09-12 69 views
0

我想選擇最後10行,但順序應該只保留爲asc。MySql選擇最後10行而不影響順序

它就像在論壇中顯示最後一頁一樣,但帖子仍按照正確的順序排列。

我試圖做到這一點

SELECT users.display,appreply.*,users.userid,users.avtar FROM appreply 
    LEFT JOIN users ON users.userid=appreply.userid 
    WHERE appreply.appid='$appid' 
    ORDER by apprepid DESC 
    LIMIT 10 

但正如我說,這擾亂了秩序。
請幫我

回答

1

嘗試

SELECT X.* FROM 
(
SELECT users.display,a.apprepid apprepid_ar, a.appid appid_ar, a.reply reply_ar, a.userid userid_ar, a.browser browser_ar, a.os os_ar, a.time time_ar,users.userid,users.avtar FROM appreply a 
LEFT JOIN users ON users.userid=a.userid 
WHERE a.appid='$appid' 
ORDER by a.apprepid DESC 
LIMIT 10 
) X ORDER BY X.apprepid_ar ASC 
+0

錯誤:每個派生表必須有它自己的別名 – kritya

+0

發生這種情況只是因爲在'appreply'和'一些列(S)用戶名稱相同...請提供所有列名稱...然後查詢可以相應地更改... – Yahia

+0

k等待。你想要'用戶'和'appreply' rt這兩個表的所有列嗎? – kritya

-1

你可能會具有表中,這通常是「ID」的自動遞增字段。 而不是使用DESC操作上apprepid領域,使用ID字段:

SELECT users.display,appreply.*,users.userid,users.avtar FROM appreply 
    LEFT JOIN users ON users.userid=appreply.userid 
    WHERE appreply.appid='$appid' 
    **ORDER by id DESC** 
    LIMIT 10 ORDER BY apprepid ASC 
+0

你改變了什麼? :O你能解釋一下嗎?謝謝 – kritya

+0

在第四線的變化部分。該行用星號突出顯示。我將字段'apprepid'更改爲'id'。你的表格中必須有一個默認的自動增量字段'Id'。對造成的不便表示歉意 – venomrld