【问题标题】:how to reverse sort mysql data如何对mysql数据进行反向排序
【发布时间】:2014-03-30 22:35:52
【问题描述】:

我知道一个奇怪的标题,但我很难过。假设我像这样抓取 20 行:

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

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

【问题讨论】:

  • 反向排序的嵌套查询

标签: php mysql


【解决方案1】:

采纳 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()(这是您的最大大小数组)向下运行到 0(这是您的最高数组视图)

任君挑选

【讨论】:

    【解决方案2】:

    您为此使用子查询。子查询选择正确的 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;
    

    【讨论】:

      【解决方案3】:

      这应该可以工作

      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
      

      【讨论】:

        【解决方案4】:

        MySQL 查询:

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

        【讨论】:

        • 不是我,但有一个简单的原因:您的答案太远不是一个有效的 mysql 查询。
        • 我在 MySQL Workbench 和我的 PHP 沙箱上进行了测试,它工作正常。 =(
        • 不知道“怎么做”,因为我从没想过这是错的……编辑:(<query>+<filters>) <more-filters>
        • (<query>+<filters>) <more-filters> 实际上并没有解释任何事情。根据dev.mysql.com/doc/refman/5.5/en/select.html - 它应该是无效的。我很好奇这是预期的行为还是无意支持的语法
        • 我不认为它是无效的,因为括号说先执行里面的内容。您不能在 LIMIT 之后添加过滤器。因此,根据问题,我得到未排序的 limited 响应,然后对其进行排序。
        猜你喜欢
        • 2017-06-05
        • 1970-01-01
        • 1970-01-01
        • 2017-06-25
        • 1970-01-01
        • 1970-01-01
        • 2019-06-25
        • 1970-01-01
        • 2012-07-12
        相关资源
        最近更新 更多