PHP MYSQL ORDER BY DESC然后ASC

时间:2016-07-28 13:36:22

标签: php

我有这个MYSQL

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 我怎么能这样做?

2 个答案:

答案 0 :(得分: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 :(得分: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代码。