2016-07-28 80 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