mysql - 订购此声明

标签 mysql

我有以下声明。结果返回,但记录未排序。我做错了什么?

SELECT * 
FROM (
SELECT name, date, SUM(volume) AS sumVolume, SUM(value) AS sumValue
FROM table
WHERE id = 12
) AS TempTable
ORDER BY date DESC

最佳答案

此查询不会按您的预期工作。在您的派生表中使用 SUM(这是一个 AGGREGATE 函数)将返回精确的一行 - 除非您开始 GROUP BY 另一列。

在您的示例中,即使您按 id 分组,您仍然只会得到一行(那是因为您按单个 id 分组)。更改 WHERE 语句以包含更多 ID 并将它们分组到派生表中。

另外,看看 MySQL manual在各种聚合函数上了解它们的作用。

问候

编辑
由于 OP 的要求已经变得清晰,我将尝试帮助他解决问题:

SELECT x.name, x.date, y.vol, y.val
  FROM table AS x,
      ( SELECT MAX(date) AS date, SUM(volume) AS vol, SUM(value) AS val
          FROM table
         WHERE id = 12 ) AS y
 WHERE x.id = 12,
   AND x.date = y.date

关于mysql - 订购此声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4296960/

相关文章:

JavaScript 和数据存储在数据库中

php - 根据出生日期计算年龄

mysql - 如何使用 MySQL 与 C 中的 2 个数据库进行交互?

mysql - 在MySQL中计算风向的平均值

php - 我如何检查数据库中的密码是否匹配?

mysql - SQL Select Data 具有多行条件

mysql - Magento 前端 404 错误

php - 使用 PHP 和 MySql 创建考勤表

php - WordPress 更新查询不起作用,返回 false

php - 在 PHP 中的准备语句中设置 SQL 变量不起作用