简体   繁体   English

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

[英]how to reverse sort mysql data

An odd title I know, but I'm stumped. 我知道一个奇怪的头衔,但是我很困惑。 Say if I grab 20 rows like this: 假设我要像这样抓取20行:

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

I then want to show them in reverse, from lowest to highest "views", how can I do this? 然后,我想反向显示它们,从最低到最高“视图”,我该怎么做? I cannot simply order by "ASC" as that gives me the wrong result set. 我不能简单地按“ ASC”排序,因为这给了我错误的结果集。 I want the highest views and to then order those from lowest to highest. 我想要最高的视图,然后从最低到最高排序。

taking Zerkms's idea: 采纳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

will let you double sort 让你加倍排序

  1. The highest will get picked (inner select) 最高的会被选中(内部选择)

  2. The lowest will get picked off first. 最低的将首先被挑选。

HOWEVER 然而

you can also reverse sort via PHP by first getting your fetchALL and running the count backward from count() (which is your max size array) down to 0 (which is your highest array view) 您还可以通过以下方式通过PHP进行逆向排序:首先获取fetchALL,然后将count从count()(这是您的最大大小的数组)向下运行到0(这是您的最高数组视图)

take your pick 选择

You use a subquery for this. 您为此使用子查询。 The subquery chooses the right 20 rows, the outer query then sorts them according to your final criteria: 子查询选择正确的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