【问题标题】:How to reverse a MySQL result如何反转 MySQL 结果
【发布时间】:2013-11-04 20:53:43
【问题描述】:

我需要反转我的输出,但不能通过切换ORDER BY 子句来实现。

这段代码是最近 12 个月的,但我需要以相反的顺序显示它们。现在它是十月一号,但我需要它最后一个。如果我切换到ORDER BY DATE ASC,那么我会得到错误的月份。

我的代码是这样的:

<?php
$result2 = mysqli_query(
    $con,
    "SELECT SUM(DISTRIBUTED_AMOUNT / EXCHANGE_RATE)
        FROM royalties 
        GROUP BY DATE
        ORDER BY DATE DESC
        LIMIT 12"
);
while($row2 = mysqli_fetch_array($result2)) {
    echo number_format($row2[0], 2, '.', '') . ', ';
}?>

【问题讨论】:

  • 您可以添加仅匹配过去 12 个月的日期的 WHERE 子句,然后反转 ORDER BY。这不仅可以解决顺序问题,还可以使查询更快,因为它不必处理整个表。
  • @Barmar 您应该将其添加为答案...
  • 您的date 列的类型是什么?它是一个日期,还是像YYYY-MM 这样的字符串?按日期分组如何只返回每个月的一行,而不是每个月的每一天的行?
  • 它是一个字符串,YYYY-MM。而且是每月一排,给我每月的总数
  • 不应标记为 PHP,因为它只涉及 MySQL

标签: php mysql sql sql-order-by


【解决方案1】:

您可以将查询包装在另一个选择中并反转order by

SELECT res
FROM (
  SELECT `date`,SUM(DISTRIBUTED_AMOUNT / EXCHANGE_RATE) AS res
  FROM royalties
  GROUP BY `date`
  ORDER BY `date` DESC LIMIT 12
  ) a
ORDER BY `date` ASC

【讨论】:

  • 我现在收到这个错误,mysqli_fetch_array() 期望参数 1 是 mysqli_result,布尔值给定
猜你喜欢
  • 1970-01-01
  • 2017-11-13
  • 2016-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 2019-09-13
  • 1970-01-01
相关资源
最近更新 更多