mysql - 群组功能使用无效(无条件)

标签 mysql mysql-error-1064 sequelpro

表格如下所示:

| 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 解决了这个问题,但我没有条件。有什么想法可能导致此错误消息吗?

最佳答案

您根本不需要 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

关于mysql - 群组功能使用无效(无条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653089/

相关文章:

MySQL存储过程循环结束后变量值返回null

如果id已经存在,Java更新mysql行

mysql - 无法解决 MySQL 错误 #1064

mysql - 在 MySQL/Sequel Pro 中将 VARCHAR 列转换为 INT

mysql - 我如何结合我的两个查询

Java Hibernate - OneToMany 关系返回空对象(注解)

mysql - 如何从 MySQL 控制台切换到新用户

MySQL 触发器更新后如果其他插入

mysql - 如何在MySQL存储过程中的IN语句中使用查询字符串

mysql - 使用 Sequel Pro 创建和链接数据库