【问题标题】:Invalid use of group function (with no conditions)组函数的无效使用(无条件)
【发布时间】:2016-06-06 08:46:41
【问题描述】:

表格如下所示:

| colA | colB | colC | colD |some other cols
-----------------------------
|double|double| int  | int  |some other datatyps

我想选择每列的总和并按它们分组。目前我没有任何条件必须为真。所以这是我的查询:

SELECT SUM(colA) as 'cola', SUM(colB)as 'colb', SUM(colC) as 'colc', SUM(colD) as 'cold', SUM(colA - colB)as 'sub'
FROM table_name
GROUP BY cola,colb,colc,cold,sub

然后它会产生错误:无效使用组函数

我红了几篇关于这个错误的帖子,但他们都有 WHERE 条件和 HAVING 解决了这个问题,但我没有条件。任何想法可能导致此错误消息?

【问题讨论】:

    标签: mysql mysql-error-1064 sequelpro


    【解决方案1】:

    您根本不需要GROUP BY 子句:

    SELECT SUM(t.colA) as 'cola',
           SUM(t.colB)as 'colb',
           SUM(t.colC) as 'colc',
           SUM(t.colD) as 'cold',
           SUM(t.colA - t.colB)as 'sub'
    FROM table_name t
    

    GROUP BY 子句用于获取每个 GROUP 的计算/聚合/不同值,就像 ID 一样,因为您想要总和,所以不需要 group by 子句

    GROUP BY cola,colb,colc,cold,sub
    

    这一行意味着每个组是 cola,colb,colc,cold,sub 的组合,因为 sub 是一个计算列,所以它还不存在!不要将其包含在您的组中

    如果您想区分重复项,请使用 DISTINCT 或从组中删除 sub 列:

    GROUP BY t.cola,t.colb,t.colc,t.cold
    

    【讨论】:

    • 现在可能,但后来我有条件,然后我需要分组
    • 按什么分组? @伊莎贝尔
    • @Isabell 然后发布其他查询
    • 为了什么?获得不同的价值?目的是什么?
    • 不能在“可乐”上分组
    【解决方案2】:

    你的错是你在group by中包含了表中不存在的sub。

    所以试试这个:

    SELECT SUM(colA) as 'cola', SUM(colB)as 'colb', 
    SUM(colC) as 'colc', SUM(colD) as 'cold', SUM(colA - colB)as 'sub'
    FROM table_name
    GROUP BY cola,colb,colc,cold
    

    【讨论】:

    • 不能在“可乐”上分组
    • 你使用什么数据库?在简单的 SQL 中,我使用了那个简单的代码并且非常适合我:create table ca (colA float,colB float,colC int,colD int) SELECT SUM(colA) as 'cola', SUM(colB)as 'colb', SUM (colC) as 'colc', SUM(colD) as 'cold', SUM(colA - colB) as 'sub' FROM ca GROUP BY cola,colb,colc,cold
    • Aurora 并通过 sequel pro 使用它
    猜你喜欢
    • 2011-01-20
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多