Php 如何对mysql数据进行反向排序
我知道这是一个奇怪的标题,但我被难住了。如果我抓取20行,像这样:Php 如何对mysql数据进行反向排序,php,mysql,Php,Mysql,我知道这是一个奇怪的标题,但我被难住了。如果我抓取20行,像这样: SELECT * FROM `articles` WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) ORDER BY `views` DESC LIMIT 20 然后我想把它们倒转过来,从最低的“视图”到最高的“视图”,我该怎么做呢?我不能简单地按“ASC”排序,因为这给了我错误的结果集。我想要最高的视图,然后从最低到最高进行排序。为此使用子查询。子查
SELECT * FROM `articles` WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) ORDER BY `views` DESC LIMIT 20
然后我想把它们倒转过来,从最低的“视图”到最高的“视图”,我该怎么做呢?我不能简单地按“ASC”排序,因为这给了我错误的结果集。我想要最高的视图,然后从最低到最高进行排序。为此使用子查询。子查询选择正确的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
) as reverse_article
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;
使用反向排序的嵌套查询不是我,但有一个简单的原因:您的答案与有效的mysql查询相差太远。我在mysql Workbench和PHP沙盒上进行了测试,结果正常=(不知道“怎么做”,因为我从来没有想过这是错的……编辑:
(+)
(+)
实际上没有解释任何东西。根据-它应该是无效的。我很好奇这是预期的行为还是无意中支持的syntaxI不认为它是无效的,因为括号中说先执行内部的内容。你不能在限制之后添加过滤器。因此基于这个问题,我得到了有限的响应e未排序,然后对其进行排序。