2016-07-28 133 views
0

我有這個MYSQLPHP MYSQL ORDER BY DESC然後ASC

SELECT * FROM chat WHERE To_='$NameId' OR From_='$NameId' ORDER BY `DATE` DESC LIMIT 0,50 

此代碼返回我的數據順序

1 newest 2 newest 3 newest 4 newest 5 newest 但我想以這種方式

要返回數據5 newest 4 newest 3 newest 2 newest 1 newest 我該怎麼做?

+0

'ORDER BY \'DATE \'ASC'? –

+0

@u_mulder它返回最古老的 – COp

+0

只是'array_reverse'你的輸出在PHP? –

回答

0

使用此:

SELECT * FROM (select * from chat where To_='$NameId' OR From_='$NameId' ORDER BY DATE DESC LIMIT 0,50) sub ORDER BY DATE ASC 
+1

OP爲什麼要用這個?請澄清你的答案。 – Daan

+0

@Daan它的工作;) – JustOnUnderMillions

+0

謝謝!它的工作,你能解釋'sub'? – COp

0

據我瞭解,你想改變的記錄方向後獲得前50分的記錄。

您可以使用MySQL的子查詢功能。假設你的查詢結果是新的,閃亮的表格。因此,使用這個(實際上它是數據集)爲所需結果編寫SQL。 (在我們的例子中,我們將其重命名爲結果

SELECT * FROM (select * from chat where To_='$NameId' OR From_='$NameId' ORDER BY DATE DESC LIMIT 0,50) as results ORDER BY results.DATE ASC 

此外,如果有「數」的結果,你可以使用單級查詢做同樣的事情。考慮一下;

SELECT * FROM chat WHERE To_='$NameId' OR From_='$NameId' ORDER BY `DATE` ASC LIMIT ***MyCount***,50 

MySQL不會強迫你重命名的子查詢的結果,但重命名 它們會導致更多的可讀性SQL代碼。

+0

Rijjn已經發布了答案:) – COp