我有以下声明。结果返回,但记录未排序。我做错了什么?
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/