繁体   English   中英

如何对mysql数据进行反向排序

[英]how to reverse sort mysql data

我知道一个奇怪的头衔,但是我很困惑。 假设我要像这样抓取20行:

SELECT * FROM `articles` WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) ORDER BY `views` DESC LIMIT 20

然后,我想反向显示它们,从最低到最高“视图”,我该怎么做? 我不能简单地按“ ASC”排序,因为这给了我错误的结果集。 我想要最高的视图,然后从最低到最高排序。

采纳Zerkms的想法:

Select * FROM (
    SELECT * FROM `articles` 
    WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY))
    ORDER BY `views` DESC 
    LIMIT 20 
) as reverse_article 
ORDER BY views ASC

让你加倍排序

  1. 最高的会被选中(内部选择)

  2. 最低的将首先被挑选。

然而

您还可以通过以下方式通过PHP进行逆向排序:首先获取fetchALL,然后将count从count()(这是您的最大大小的数组)向下运行到0(这是您的最高数组视图)

选择

您为此使用子查询。 子查询选择正确的20行,然后外部查询根据您的最终条件对它们进行排序:

SELECT a.*
FROM (SELECT a.*
      FROM articles a
      WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY))
      ORDER BY views DESC
      LIMIT 20
     ) a
ORDER BY views ASC;

这应该工作

SELECT * FROM (SELECT * FROM `articles` WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) ORDER BY `views` DESC LIMIT 20) t ORDER BY `views` ASC

MySQL查询:

(SELECT * FROM `articles` WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) ORDER BY `views` DESC LIMIT 20) ORDER by `views` ASC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM