2016-05-04 43 views
0

我有一個聊天服務,所以:爲了通過遞減沒有顯示正確的順序

select k.user, c.id, c.from, c.sent, c.message, c.recd from chat c 
inner join cadastro k on c.from=k.id 
where (`from`=? and `to`=?) 
order by c.id 
limit 50 

我想說明過去50個消息,如果我發送1到100,它會顯示:

1 
2 
3 
... 
49 
50 

我想說明的最後50條信息是這樣的:

50 
51 
... 
100 

如果我把order by c.id desc它給我的順序:

50 
49 
... 
4 
3 
2 
1 

有什麼想法嗎?

回答

2
select * from 
(
    select k.user, c.id, c.from, c.sent, c.message, c.recd from chat c 
    inner join cadastro k on c.from=k.id 
    where (`from`=? and `to`=?) 
    order by c.id desc 
    limit 50 
) tmp 
order by id asc 
+0

哦,厲害!非常感謝你! –

0

我不知道它是這樣做的最有效的方式,但你可以嘗試:

SELECT A.user, A.id, A.from, A.sent, A.message, A.recd 
FROM (
    select TOP 50 k.user, c.id, c.from, c.sent, c.message, c.recd from chat c 
    inner join cadastro k on c.from=k.id 
    where (`from`=? and `to`=?) 
    order by c.id DESC 
) AS A 
ORDER BY c.id ASC 
+0

啊,我看到juergen d擊敗了我,然後再也沒有想到。 – Sturgus

+0

謝謝你的回答! –

相關問題