[英]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
让你加倍排序
最高的会被选中(内部选择)
最低的将首先被挑选。
然而
您还可以通过以下方式通过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.