从ASC order到DESC order的MySQL子查询

从ASC order到DESC order的MySQL子查询,mysql,Mysql,我有一个按升序排序的sql。现在我希望结果按降序排序。我尝试过使用子查询,但不适合我。任何帮助或建议都将不胜感激 这是我尝试过的sql: select *, sum(sales_qty) as total_qty from sales_details left join sales on sales.salesid=sales_details.salesid where month(sales.sales_date)='$m' group by productid order by to

我有一个按升序排序的sql。现在我希望结果按降序排序。我尝试过使用子查询,但不适合我。任何帮助或建议都将不胜感激

这是我尝试过的sql:

select *, sum(sales_qty) as total_qty 
 from sales_details 
 left join sales on sales.salesid=sales_details.salesid
where month(sales.sales_date)='$m'
group by productid order by total_qty asc limit 2, 4

带有子查询的查询应该结束

select * from (
      select *, sum(sales_qty) as total_qty
        from sales_details
        left join sales on sales.salesid=sales_details.salesid
       where month(sales.sales_date)='$m'
       group by productid
       order by total_qty asc 
       limit 2, 4
     ) as sub 
 order by sum(sales_qty) desc
为什么??当你说
。。。ORDER BY SUM(sales_qty)DESC
您正在将外部查询转换为聚合查询。因为外部聚合查询没有
GROUPBY
子句,所以它必须有一行结果集

外部查询将内部查询视为一个表,一个虚拟表。该虚拟表有一个名为
sales\u qty
的列。它是您要按其排序的值


专业提示:不要在聚合查询中使用
SELECT*
。您误用了声名狼藉的非标准MySQL扩展到
groupby
,这意味着您的结果集包含不可预测的值。读这个

为什么不将
asc
关键字替换为
desc
?我首先在asc中对其进行排序,以获得至少4个总数量。现在我希望结果按desc顺序进行排序。发现查询中的问题需要向右长距离滚动,这使得SO志愿者很难发现。我重新格式化了您的查询以包含换行符。通常,格式化SQL查询以提高可读性是一个好主意。
 ... ORDER BY sales_qty DESC