You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL合并两行数据:如何获取对应非0Total值的合并结果?

解决MySQL合并行时获取正确Total值的问题

嘿,我看出来问题在哪了——你的查询里Total字段没有用聚合函数处理,GROUP BY之后它默认抓了分组里第一行的0值,而不是你要的非0数值。只需要做个小调整就能搞定:

调整后的查询语句

SELECT 
    SUBSTRING_INDEX(Item, ' - ', 1) as lineItem, 
    GROUP_CONCAT(DISTINCT Descr SEPARATOR '\n\n') as description, 
    MAX(Total) as Total, -- 也可以用 SUM(Total),根据业务需求选
    Project 
FROM table1 
WHERE deleted = 0 AND Proj = "Inventory" 
GROUP BY SUBSTRING_INDEX(Item, ' - ', 1), Project

关键调整说明

  1. 聚合Total字段:

    • 用MAX(Total):会在每个分组里取最大的Total值,刚好跳过0,直接拿到你需要的19415和434.14;
    • 如果你的业务场景里,同一分组可能有多行非0的Total需要累加,就换成SUM(Total)(0加有效数值的结果和有效数值一致,当前案例中效果相同)。
  2. 兼容MySQL严格模式:
    在MySQL 5.7及以上版本,ONLY_FULL_GROUP_BY是默认开启的,要求GROUP BY子句必须包含所有非聚合的SELECT字段,所以这里要加上Project(因为你SELECT里包含了它),否则会触发语法错误。

预期输出

执行调整后的查询后,你会得到想要的结果:

lineItem | description       | Total   | Project
---------|-------------------|---------|---------
Fuse     | abc\n\ndef        | 19415   | Inventory
Jumper   | ghi\n\njkl        | 434.14  | Inventory

内容的提问来源于stack exchange,提问作者whalien52

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:03:54