SQL第一行结果相反

Posted

技术标签:

【中文标题】SQL第一行结果相反【英文标题】:SQL First row result in reverse 【发布时间】:2019-03-13 09:32:42 【问题描述】:
SELECT item_description, item_variant, branch, GROUP_CONCAT(sum ORDER BY 'date') AS chartData
        FROM (
        SELECT item_description, item_variant, branch, SUM(sales) AS sum
        FROM inventory_branches
        WHERE (item_description = 'agapanthus') AND (date BETWEEN '2018-06' AND '2018-08')
        GROUP BY item_description, item_variant, branch, MONTH(date) DESC
        ) T
        GROUP BY item_description, item_variant, branch, MONTH('date') 
        LIMIT 5

上面的代码正确返回除了第一行之外的所有行。 chartData中的第一组数据是反的

In the first row, the 20 should be after the 58

提前谢谢你!

【问题讨论】:

你的意思是GROUP_CONCAT(sum ORDER BY 'date' DESC) AS chartData 见:Why should I provide an MCVE for what seems to me to be a very simple SQL query? @Zack 不管我在代码中怎么加 DESC 或 ASC,chartData 第一行的结果是相反的 【参考方案1】:

我假设您的表中有一个名为 date 的列。要按它排序,请使用ORDER BY date 而不是ORDER BY 'date',即不要将列名括在单引号中。 'date' 只是一个字符串文字,按它排序就像根本不排序,因为它对所有行都是相等的。

【讨论】:

我不知道为什么,但是当我去掉单引号时,我得到一个错误,说它是字段列表中的一个未知列。 @lekendary:将其包含在您的内部查询的列列表中。 它有效!我没有意识到这就是它所需要的。谢谢!

以上是关于SQL第一行结果相反的主要内容,如果未能解决你的问题,请参考以下文章

怎样一个表中的2个查询结果合并到一个表中的两列

SQL 语句取合计数

SQL Server - 读取第一行并删除

如何使用 SQL 查找表中的第一列和第一行

sql 获取分组第一行数据

SQL中逗号分隔的查询结果转换成单个字符串放到in语句里