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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP While 循环中使用 MySQL JOIN 而不是查询