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

SQL双表关联下使用GROUP BY与SUM按币种拼接PACKAGE总金额实现问题

问题原因

你遇到的报错确实是子查询嵌套层级导致的:MySQL的相关子查询仅支持外层查询的字段向下穿透1层,你的写法中嵌套了两层子查询,最内层的WHERE条件自然无法识别到最外层的packages.id字段。

正确实现方案

推荐先对PRODUCT表按package_id、currency分组汇总各币种总额,再关联PACKAGE表做字符串拼接,写法兼容MySQL 5.7及以上版本,执行效率也更高:

SELECT 
  p.id,
  GROUP_CONCAT(
    CONCAT(pt.currency, ' ', pt.total_sum) 
    ORDER BY pt.currency 
    SEPARATOR ', '
  ) AS total_amount
FROM PACKAGE p
LEFT JOIN (
  SELECT 
    package_id,
    currency,
    SUM(total) AS total_sum
  FROM PRODUCT
  GROUP BY package_id, currency
) pt ON p.id = pt.package_id
GROUP BY p.id

说明

  • 如果不需要保留无关联产品的PACKAGE记录,把LEFT JOIN替换为INNER JOIN即可
  • GROUP_CONCAT中指定ORDER BY可以保证币种的输出顺序稳定,SEPARATOR用来指定拼接的分隔符,和你预期的输出格式完全匹配

内容的提问来源于stack exchange,提问作者Đorđe Sević

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:18:00