【问题标题】:MySQL Using SUM in a JOIN giving? [duplicate]MySQL 在 JOIN 中使用 SUM? [复制]
【发布时间】: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 部分,查询运行良好。我将如何解决这个问题?

【问题讨论】:

标签: mysql join


【解决方案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())一起使用,以按一列或多列对结果集进行分组。

    【讨论】:

      猜你喜欢
      • 2020-04-28
      • 2015-01-10
      • 2019-07-17
      • 2013-01-24
      • 1970-01-01
      • 2012-02-04
      • 2021-01-18
      • 1970-01-01
      • 2014-07-27
      相关资源
      最近更新 更多