MySQL 在 JOIN 中使用 SUM? [复制]

Posted

技术标签:

【中文标题】MySQL 在 JOIN 中使用 SUM? [复制]【英文标题】:MySQL Using SUM in a JOIN giving? [duplicate] 【发布时间】:2021-06-18 20:31:37 【问题描述】:

我正在尝试在我的 mysql 查询中获取列的总和

SELECT pi.*
     , pr.EK2
     , pr.EK3
     , SUM(P_OrderTotal) as SUM_P_OrderTotal 
  FROM pixi pi 
  LEFT 
  JOIN konditionen pr 
    ON pi.P_EAN = pr.EAN 
 WHERE pi.P_OrderDate >= '2021-03-01' 
   AND pi.P_OrderDate <= '2021-03-31';

这给了我:

在没有 GROUP BY 的聚合查询中,SELECT 列表的表达式 #1 包含非聚合列 'table.pi.P_OrderNr';这与 sql_mode=only_full_group_by 不兼容

没有SUM(P_OrderTotal) as SUM_P_OrderTotal 部分,查询运行良好。我将如何解决这个问题?

【问题讨论】:

'我将如何解决这个问题?' - 很难说,您还没有告诉我们您要达到的目标或提供示例数据和所需的输出。而且 p_order_total 的来源并不明显。 这能回答你的问题吗? SELECT list is not in GROUP BY clause and contains nonaggregated column .... incompatible with sql_mode=only_full_group_by(你可以通过***.com/search?q=sql_mode%3Donly_full_group_by自己找到这个) 【参考方案1】:

由于聚合,这将返回 1 行,这意味着非聚合值是“随机的”。可以通过公用表表达式使用子查询:

SELECT pi.*
     , pr.EK2
     , pr.EK3
     , (select sum(P_OrderTotal) from ...) as SUM_P_OrderTotal
...

【讨论】:

【参考方案2】:

如错误消息所述,您必须使用 group by 语句。 GROUP BY 语句通常与聚合函数(COUNT()、SUM()、AVG())一起使用,以按一列或多列对结果集进行分组。

【讨论】:

以上是关于MySQL 在 JOIN 中使用 SUM? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL - 将 SUM 与 JOIN 结合使用

在 PHP While 循环中使用 MySQL JOIN 而不是查询

MySQL SUM () INNER JOIN 和 LIMIT 使用 FOREIGN KEY

MySQL:带有 JOIN 的 SUM() 返回不正确的值

MySQL JOIN 与 SUM 和 3 个表

带有 SUM 的 MySQL LEFT JOIN 很慢